Function invocations working, stack unwinding correctly
This commit is contained in:
@@ -7,12 +7,14 @@ push 1
|
||||
push 2
|
||||
push 3
|
||||
j 1
|
||||
sub sp sp 3
|
||||
sub sp sp 0
|
||||
pop ra
|
||||
j ra
|
||||
push 14
|
||||
j 4
|
||||
sub sp sp 0
|
||||
pop ra
|
||||
j ra
|
||||
main:
|
||||
push 19
|
||||
push 1
|
||||
push 2
|
||||
push 3
|
||||
j 4
|
||||
push 20
|
||||
j 12
|
||||
|
||||
@@ -172,7 +172,7 @@ impl<'a> Compiler<'a> {
|
||||
let return_addr = self.current_line + to_write.lines().count() + 2;
|
||||
self.write_output(format!("push {return_addr}"))?;
|
||||
self.output.write(to_write.as_bytes())?;
|
||||
self.current_line = return_addr;
|
||||
self.current_line = return_addr - 1;
|
||||
|
||||
self.write_output(format!("j {function_line}"))?;
|
||||
|
||||
|
||||
@@ -2,8 +2,12 @@ fn test(a, b, c) {
|
||||
|
||||
};
|
||||
|
||||
fn test2(x, y, z) {
|
||||
fn test2() {
|
||||
test(1, 2, 3);
|
||||
};
|
||||
|
||||
test2(1, 2, 3);
|
||||
fn test3() {
|
||||
test2();
|
||||
};
|
||||
|
||||
test3();
|
||||
Reference in New Issue
Block a user