UnaryExpr Analyze fixed
This commit is contained in:
@@ -358,12 +358,19 @@ public class CodeGenImpl extends CodeGenBase
|
|||||||
@Override
|
@Override
|
||||||
public Register analyze(UnaryExpr node)
|
public Register analyze(UnaryExpr node)
|
||||||
{
|
{
|
||||||
node.operand.dispatch(this);
|
if(node.operator.equals("-") && node.getInferredType().equals(Type.INT_TYPE))
|
||||||
if(node.operator.equals("-"))
|
|
||||||
{
|
{
|
||||||
|
node.operand.dispatch(this);
|
||||||
backend.emitLI(Register.T0, -1, "Set value of Register T0 to -1");
|
backend.emitLI(Register.T0, -1, "Set value of Register T0 to -1");
|
||||||
backend.emitMUL(Register.A0, Register.A0, Register.T0, "Multiply by -1");
|
backend.emitMUL(Register.A0, Register.A0, Register.T0, "Multiply by -1");
|
||||||
}
|
}
|
||||||
|
else if(node.operator.equals("not") && node.getInferredType().equals(Type.BOOL_TYPE))
|
||||||
|
{
|
||||||
|
node.operand.dispatch(this);
|
||||||
|
backend.emitSEQZ(Register.T0, Register.A0, "Not operation on Register A0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return null;
|
||||||
return Register.A0;
|
return Register.A0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user