private void TranslateStm(CJUMP stm) { if (stm.Left is CONST) { Temp.Temp r = TranslateExpr(stm.Right); if (stm.Relop == CJUMP.Rel.Equal || stm.Relop == CJUMP.Rel.NotEqual) { InstrList.Add(new CJumpInt(stm.Relop, r, (stm.Left as CONST).Value, new Label(stm.IfTrue))); } else { InstrList.Add(new CJumpInt(CJUMP.NotRel(stm.Relop), r, (stm.Left as CONST).Value, new Label(stm.IfTrue))); } } else if (stm.Right is CONST) { Temp.Temp l = TranslateExpr(stm.Left); InstrList.Add(new CJumpInt(stm.Relop, l, (stm.Right as CONST).Value, new Label(stm.IfTrue))); } else { Temp.Temp l = TranslateExpr(stm.Left); Temp.Temp r = TranslateExpr(stm.Right); InstrList.Add(new CJump(stm.Relop, l, r, new Label(stm.IfTrue))); } }