From 874808ef981b0d6b4e83e09329c3354e628365b8 Mon Sep 17 00:00:00 2001 From: Apoorva Ranade Date: Mon, 3 May 2021 23:40:11 +0530 Subject: [PATCH] Added is operator --- src/main/java/chocopy/pa3/CodeGenImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/chocopy/pa3/CodeGenImpl.java b/src/main/java/chocopy/pa3/CodeGenImpl.java index 13d3270..6d522cf 100644 --- a/src/main/java/chocopy/pa3/CodeGenImpl.java +++ b/src/main/java/chocopy/pa3/CodeGenImpl.java @@ -728,7 +728,17 @@ public class CodeGenImpl extends CodeGenBase sp_off -= 2; backend.emitADDI(SP, FP, -sp_off*wordSize, "restore sp"); } - // TODO: Implement "is" for objects + else if(operator.equals("is")) + { + node.right.dispatch(this); + backend.emitSW(Register.A0, Register.FP, -sp_off*wordSize, "Push on stack slot "+sp_off); + incSp(1); + node.left.dispatch(this); + sp_off--; + backend.emitLW(Register.T0, Register.FP, -sp_off*wordSize, "Pop stack slot "+sp_off); + backend.emitXOR(Register.A0, Register.A0, Register.T0, "Operator: is"); + backend.emitSEQZ(Register.A0, Register.A0, "Result is True if XOR equals 0"); + } else { backend.emitJAL(errorNI, "Operator not implemented");