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"; } }