fr1 = asm.forwardJcc(asm.EQ);
fr1 = asm.forwardJcc(VM_Assembler.EQ);
  protected final void emit_dcmpg() {    VM_ForwardReference fr1,fr2,fr3;    asm.emitFLD_Reg_RegDisp_Quad(FP0, SP, TWO_SLOTS);        // copy value1 into FPU    asm.emitFLD_Reg_RegInd_Quad(FP0, SP);                        // copy value2 into FPU    asm.emitADD_Reg_Imm(SP, 4*WORDSIZE);                // popping the stack    if (VM.VerifyAssertions) VM._assert(S0 != EAX);                        // eax is used by FNSTSW    asm.emitXOR_Reg_Reg(S0, S0);                        // S0 <- 0    asm.emitFUCOMPP();                        // compare and pop FPU *2    asm.emitFNSTSW();                     // move FPU flags into (E)AX    asm.emitSAHF();                       // store AH into flags    fr1 = asm.forwardJcc(asm.EQ);        // branch if ZF set (eq. or unord.)    // ZF not set ->  neither equal nor unordered    asm.emitMOV_Reg_Imm(S0, 1);                        // load 1 into S0    fr2 = asm.forwardJcc(asm.LLT);        // branch if CF set (val2 < val1)    asm.emitMOV_Reg_Imm(S0, -1);                        // load -1 into S0    fr1.resolve(asm);                        // ZF set (equal or unordered)    fr3 = asm.forwardJcc(asm.LGE);        // branch if CF not set (not unordered)    asm.emitMOV_Reg_Imm(S0, 1);                        // load 1 into S0    fr3.resolve(asm);    fr2.resolve(asm);    asm.emitPUSH_Reg(S0);                        // push result on stack  }