Skip to content
Snippets Groups Projects
Commit 75570697 authored by Vedaank's avatar Vedaank
Browse files

negate done 15 pass

parent 90f6645f
No related branches found
No related tags found
No related merge requests found
CLEAN=mvn clean package
TEST=java -cp "chocopy-ref.jar:target/assignment.jar" chocopy.ChocoPy --pass=..s --run --dir src/test/data/pa3/sample/ --test
FILE=None
FILE=op_logical
clean:
$(CLEAN)
test:
......
......@@ -464,6 +464,27 @@ public class CodeGenImpl extends CodeGenBase {
return null;
}
@Override
public Void analyze(UnaryExpr unaryExpr) {
switch (unaryExpr.operator) {
case "-":
if (unaryExpr.getInferredType().equals(SymbolType.INT_TYPE)) {
backend.emitADDI(SP, SP, -4, "Increment stack ptr for first operand");
unaryExpr.operand.dispatch(this);
backend.emitLW(T0, SP, 0, "Load operand 2 into t0");
backend.emitADDI(SP, SP, 4, "Decrement stack ptr for first operand");
backend.emitSUB(T0, ZERO, T0, "Subtract operands");
backend.emitSW(T0, SP, 0, "Push result onto stack");
return null;
}
}
return null;
}
@Override
public Void analyze(AssignStmt assignStmt) {
return null;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment