public override void AcceptEmitter(AsmEmitter asm) { Game g = Game.GetInstance(); int strId = g.GetStringId(msg); asm.WritePrintLn(strId, msg); }
//applies the operator and leaves //the result on the stack public void AcceptEmitter(AsmEmitter asm) { if (opType == Opr.EQ) { asm.WriteEqTest(); } else if (opType == Opr.NEQ) { asm.WriteNeqTest(); } else if (opType == Opr.GT) { asm.WriteGtTest(); } else if (opType == Opr.LT) { asm.WriteLtTest(); } else if (opType == Opr.AND) { asm.WriteAndTest(); } else if (opType == Opr.OR) { asm.WriteOrTest(); } }
public override void AcceptEmitter(AsmEmitter asm) { foreach (Statement s in statements) { s.AcceptEmitter(asm); } }
public void AcceptEmitter(AsmEmitter asm) { //write the expression lhs.AcceptEmitter(asm); rhs.AcceptEmitter(asm); //apply operator and leave result on stack op.AcceptEmitter(asm); }
public override void AcceptEmitter(AsmEmitter asm) { Game g = Game.GetInstance(); int o = g.GetObjectId(obj); asm.WriteConstant(o); rhs.AcceptEmitter(asm); //push value asm.WriteSetAttr(attr); }
public override void AcceptEmitter(AsmEmitter asm) { string label = asm.GetNextLabel(); if (elseNode == null) { //just an 'if' statement expr.AcceptEmitter(asm); //leaves result on stack asm.WriteJumpOnFalse(label); //pull it and jump body.AcceptEmitter(asm); asm.WriteLabel(label); } else if (elseNode != null) { string outLabel = asm.GetNextLabel(); asm.WriteJumpOnFalse(label); //pull it and jump body.AcceptEmitter(asm); asm.WriteJump(outLabel); //jump out asm.WriteLabel(label); elseNode.AcceptEmitter(asm); asm.WriteLabel(outLabel); } }
public override void AcceptEmitter(AsmEmitter asm) { asm.WriteMove(); }
public virtual void AcceptEmitter(AsmEmitter asm) { }
public void AcceptEmitter(AsmEmitter asm) { asm.WriteConstant(val); }
public override void AcceptEmitter(AsmEmitter asm) { val.AcceptEmitter(asm); //push rhs asm.WriteAddToVar(varName); }
public override void AcceptEmitter(AsmEmitter asm) { rhs.AcceptEmitter(asm); //push rhs asm.WriteSetVar(varName); }
public abstract void AcceptEmitter(AsmEmitter asm);