Package org.jnode.assembler.x86

Examples of org.jnode.assembler.x86.X86Register


            counters.getCounter("ldc-vmtype").inc();
        }

        final WordItem item = L1AHelper.requestWordRegister(eContext, JvmType.REFERENCE, false);
        final Label curInstrLabel = getCurInstrLabel();
        final GPR reg = item.getRegister();

        // Load the class from the statics table
        if (os.isCode32()) {
            helper.writeGetStaticsEntry(curInstrLabel, reg, value);
        } else {
View Full Code Here


            assertCondition(eContext.getGPRPool().isFree(X86Register.ECX), "ECX not free");
            assertCondition(eContext.getGPRPool().isFree(X86Register.EDX), "EDX not free");
            assertCondition(eContext.getGPRPool().isFree(X86Register.ESI), "ESI not free");

            writePOP64(X86Register.EBX, X86Register.ECX); // Value 2
            final GPR v2_lsb = X86Register.EBX;
            final GPR v2_msb = X86Register.ECX;
            writePOP64(X86Register.ESI, X86Register.EDI); // Value 1
            final GPR v1_lsb = X86Register.ESI;
            final GPR v1_msb = X86Register.EDI;

            final Label tmp1 = new Label(curInstrLabel + "$tmp1");
            final Label tmp2 = new Label(curInstrLabel + "$tmp2");
            final GPR EAX = X86Register.EAX;
            final GPR EDX = X86Register.EDX;

            os.writeMOV(INTSIZE, EAX, v1_msb); // hi2
            os.writeOR(EAX, v2_msb); // hi1 | hi2
            os.writeJCC(tmp1, X86Constants.JNZ);
            os.writeMOV(INTSIZE, EAX, v1_lsb); // lo2
View Full Code Here

                counters.getCounter("lneg-nonconst").inc();
            }
            // Load val
            v.load(eContext);
            if (os.isCode32()) {
                final GPR lsb = v.getLsbRegister(eContext);
                final GPR msb = v.getMsbRegister(eContext);

                // Calculate
                os.writeNEG(msb); // msb := -msb
                os.writeNEG(lsb); // lsb := -lsb
                os.writeSBB(msb, 0); // high += borrow
View Full Code Here

        final int n = matchValues.length;
        // BootLogInstance.get().debug("lookupswitch length=" + n);

        final IntItem key = vstack.popInt();
        key.load(eContext);
        final GPR keyr = key.getRegister();
        // Conservative assumption, flush stack
        vstack.push(eContext);
        key.release(eContext);

        for (int i = 0; i < n; i++) {
View Full Code Here

        final GPR refr = ref.getRegister();
        if (index.isConstant()) {
            final int offset = index.getValue() * scale;
            os.writeLEA(dst, refr, arrayDataOffset + offset);
        } else {
            final GPR32 idxr = (GPR32) index.getRegister();
            if (os.isCode32()) {
                os.writeLEA(dst, refr, idxr, scale, arrayDataOffset);
            } else {
                final GPR64 idxr64 = (GPR64) eContext.getGPRPool().getRegisterInSameGroup(idxr, JvmType.LONG);
                os.writeMOVSXD(idxr64, (GPR32) idxr);
View Full Code Here

            // Calculate absolute address of jump target
            if (os.isCode32()) {
                os.writeADD(tmp, tmp, 0);
            } else {
                final GPR32 tmp2 = (GPR32) L1AHelper.requestRegister(eContext, JvmType.INT, false);
                os.writeMOV(BITS32, tmp2, tmp, 0);
                final GPR64 tmp2_64 = L1AHelper.get64BitReg(eContext, tmp2);
                os.writeMOVSXD(tmp2_64, tmp2);
                os.writeADD(tmp, tmp2_64);
                L1AHelper.releaseRegister(eContext, tmp2);
View Full Code Here

                final GPR msb = val.getMsbRegister(eContext);
                // Store
                os.writeMOV(INTSIZE, helper.BP, disp + LSB, lsb);
                os.writeMOV(INTSIZE, helper.BP, disp + MSB, msb);
            } else {
                final GPR64 reg = val.getRegister(eContext);
                // Store
                os.writeMOV(BITS64, helper.BP, disp, reg);
            }
        }
View Full Code Here

        } else {
            final GPR32 idxr = (GPR32) index.getRegister();
            if (os.isCode32()) {
                os.writeLEA(dst, refr, idxr, scale, arrayDataOffset);
            } else {
                final GPR64 idxr64 = (GPR64) eContext.getGPRPool().getRegisterInSameGroup(idxr, JvmType.LONG);
                os.writeMOVSXD(idxr64, (GPR32) idxr);
                os.writeLEA(dst, refr, idxr64, scale, arrayDataOffset);
            }
        }
    }
View Full Code Here

                    os.writeArithOp(operationLsb, r1_lsb, v2.getLsbValue());
                    os.writeArithOp(operationMsb, r1_msb, v2.getMsbValue());
                    break;
            }
        } else {
            final GPR64 r1 = v1.getRegister(eContext);
            switch (v2.getKind()) {
                case Item.Kind.GPR:
                    os.writeArithOp(operationLsb, r1, v2.getRegister(eContext));
                    break;
                case Item.Kind.LOCAL:
View Full Code Here

                    final GPR lsb = idw.getLsbRegister(eContext);
                    final GPR msb = idw.getMsbRegister(eContext);
                    os.writeMOV(BITS32, lsb, refr, fieldOffset + LSB);
                    os.writeMOV(BITS32, msb, refr, fieldOffset + MSB);
                } else {
                    final GPR64 reg = idw.getRegister(eContext);
                    os.writeMOV(BITS64, reg, refr, fieldOffset);
                }
                result = idw;
            }
        }
View Full Code Here

TOP

Related Classes of org.jnode.assembler.x86.X86Register

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.