From 8d5879bb51b1a014ebe3cccee40f7c58a0ba37a2 Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 20 Dec 2019 16:28:38 +0000 Subject: [PATCH] Fix Binexp code not cleaning up after itself --- task1/CodegenImpl.java | 4 +++- task2/CodegenImpl.java | 4 +++- task3/CodegenImpl.java | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/task1/CodegenImpl.java b/task1/CodegenImpl.java index 2098b2b..45539fa 100644 --- a/task1/CodegenImpl.java +++ b/task1/CodegenImpl.java @@ -54,7 +54,9 @@ public class CodegenImpl implements Codegen { + "mv s1,a0\n" + compileExp(b.r) + "mv t1,a0\n" - + compileExpBinop(b.binop); + + compileExpBinop(b.binop) + + "lw s1,(sp)\n" + + "addi sp,sp,4\n"; } else if (e instanceof Variable) { int offset = ((Variable) e).x - 1; diff --git a/task2/CodegenImpl.java b/task2/CodegenImpl.java index 2098b2b..45539fa 100644 --- a/task2/CodegenImpl.java +++ b/task2/CodegenImpl.java @@ -54,7 +54,9 @@ public class CodegenImpl implements Codegen { + "mv s1,a0\n" + compileExp(b.r) + "mv t1,a0\n" - + compileExpBinop(b.binop); + + compileExpBinop(b.binop) + + "lw s1,(sp)\n" + + "addi sp,sp,4\n"; } else if (e instanceof Variable) { int offset = ((Variable) e).x - 1; diff --git a/task3/CodegenImpl.java b/task3/CodegenImpl.java index 2098b2b..45539fa 100644 --- a/task3/CodegenImpl.java +++ b/task3/CodegenImpl.java @@ -54,7 +54,9 @@ public class CodegenImpl implements Codegen { + "mv s1,a0\n" + compileExp(b.r) + "mv t1,a0\n" - + compileExpBinop(b.binop); + + compileExpBinop(b.binop) + + "lw s1,(sp)\n" + + "addi sp,sp,4\n"; } else if (e instanceof Variable) { int offset = ((Variable) e).x - 1;