helper.writePUSH(Register.ECX);
final X86RegisterPool pool = eContext.getPool(); pool.request(Register.ECX); IntItem res = IntItem.createRegister(Register.ECX); pool.transferOwnerTo(Register.ECX, res); vstack.pushItem(res);
    private void visit_dfcmp(boolean gt, boolean isfloat) {        //TODO: port to orp-style        vstack.push(eContext);        Item v1 = vstack.popItem(isfloat ? Item.FLOAT : Item.DOUBLE);        Item v2 = vstack.popItem(isfloat ? Item.FLOAT : Item.DOUBLE);        v1.release(eContext);        v2.release(eContext);        if (isfloat) {            if (gt) {                os.writeFLD32(SP, 4); // reverse order                os.writeFLD32(SP, 0);            } else {                os.writeFLD32(SP, 0);                os.writeFLD32(SP, 4);            }            os.writeLEA(SP, SP, 8);        } else {            if (gt) {                os.writeFLD64(SP, 8); // reverse order                os.writeFLD64(SP, 0);            } else {                os.writeFLD64(SP, 0);                os.writeFLD64(SP, 8);            }            os.writeLEA(SP, SP, 16);        }        os.writeFUCOMPP(); // Compare, Pop twice        os.writeFNSTSW_AX(); // Store fp status word in AX        os.writeSAHF(); // Store AH to Flags        Label eqLabel = new Label(this.curInstrLabel + "eq");        Label ltLabel = new Label(this.curInstrLabel + "lt");        Label endLabel = new Label(this.curInstrLabel + "end");        os.writeJCC(eqLabel, X86Constants.JE);        os.writeJCC(ltLabel, X86Constants.JB);        // Greater        if (gt) {            os.writeMOV_Const(Register.ECX, -1);        } else {            os.writeMOV_Const(Register.ECX, 1);        }        os.writeJMP(endLabel);        // Equal        os.setObjectRef(eqLabel);        os.writeXOR(Register.ECX, Register.ECX);        os.writeJMP(endLabel);        // Less        os.setObjectRef(ltLabel);        if (gt) {            os.writeMOV_Const(Register.ECX, 1);        } else {            os.writeMOV_Const(Register.ECX, -1);        }        // End        os.setObjectRef(endLabel);        helper.writePUSH(Register.ECX);    }