VM_ForwardReference fr2 = asm.forwardJcc(asm.EQ);
VM_ForwardReference fr2 = asm.forwardJcc(VM_Assembler.EQ);
  protected final void emit_lcmp() {    asm.emitPOP_Reg(T0);        // the low half of value2    asm.emitPOP_Reg(S0);        // the high half of value2    asm.emitPOP_Reg(T1);        // the low half of value1    asm.emitSUB_Reg_Reg(T1, T0);        // subtract the low half of value2 from                                // low half of value1, result into T1    asm.emitPOP_Reg(T0);        // the high half of value 1    //  pop does not alter the carry register    asm.emitSBB_Reg_Reg(T0, S0);        // subtract the high half of value2 plus                                // borrow from the high half of value 1,                                // result in T0    asm.emitMOV_Reg_Imm(S0, -1);        // load -1 into S0    VM_ForwardReference fr1 = asm.forwardJcc(asm.LT); // result negative --> branch to end    asm.emitMOV_Reg_Imm(S0, 0);        // load 0 into S0    asm.emitOR_Reg_Reg(T0, T1);        // result 0     VM_ForwardReference fr2 = asm.forwardJcc(asm.EQ); // result 0 --> branch to end    asm.emitMOV_Reg_Imm(S0, 1);        // load 1 into S0    fr1.resolve(asm);    fr2.resolve(asm);    asm.emitPUSH_Reg(S0);        // push result on stack  }