public override string Convert(ASM.ASMBlock theBlock) { return "loop " + theBlock.GenerateILOpLabel(ILPosition, Extension); }
public override string Convert(ASM.ASMBlock theBlock) { string jmpOp = ""; int numSourceOperands = 2; switch (BranchType) { case BranchOp.Branch: jmpOp = "b"; numSourceOperands = 0; break; case BranchOp.BranchZero: jmpOp = "beqz"; numSourceOperands = 1; break; case BranchOp.BranchNotZero: jmpOp = "bne"; Src2 = "$zero"; break; case BranchOp.BranchEqual: jmpOp = "beq"; break; case BranchOp.BranchNotEqual: jmpOp = "bne"; break; case BranchOp.BranchLessThan: if (UnsignedTest) { jmpOp = "bltu"; } else { jmpOp = "blt"; } break; case BranchOp.BranchGreaterThan: if (UnsignedTest) { jmpOp = "bgtu"; } else { jmpOp = "bgt"; } break; case BranchOp.BranchLessThanEqual: if (UnsignedTest) { jmpOp = "bleu"; } else { jmpOp = "ble"; } break; case BranchOp.BranchGreaterThanEqual: if (UnsignedTest) { jmpOp = "bgeu"; } else { jmpOp = "bge"; } break; } string label = theBlock.GenerateMethodLabel() + theBlock.GenerateILOpLabel(DestILPosition, Extension); if (numSourceOperands == 2) { return jmpOp + " " + Src1 + ", " + Src2 + ", " + label + "\nnop"; } else if (numSourceOperands == 1) { return jmpOp + " " + Src1 + ", " + label + "\nnop"; } else { return jmpOp + " " + label + "\nnop"; } }
public override string Convert(ASM.ASMBlock theBlock) { string jmpOp = ""; switch (JumpType) { case JmpOp.Jump: jmpOp = "jmp"; break; case JmpOp.JumpZero: jmpOp = "jz"; break; case JmpOp.JumpNotZero: jmpOp = "jnz"; break; case JmpOp.JumpEqual: jmpOp = "je"; break; case JmpOp.JumpNotEqual: jmpOp = "jne"; break; case JmpOp.JumpLessThan: if (UnsignedTest) { jmpOp = "jb"; } else { jmpOp = "jl"; } break; case JmpOp.JumpGreaterThan: if (UnsignedTest) { jmpOp = "ja"; } else { jmpOp = "jg"; } break; case JmpOp.JumpLessThanEqual: if (UnsignedTest) { jmpOp = "jbe"; } else { jmpOp = "jle"; } break; case JmpOp.JumpGreaterThanEqual: if (UnsignedTest) { jmpOp = "jae"; } else { jmpOp = "jge"; } break; } return jmpOp + " " + theBlock.GenerateILOpLabel(DestILPosition, Extension); }