Package org.jnode.assembler.x86

Examples of org.jnode.assembler.x86.X86BinaryAssembler


            .getDeclaringClass();
        if (!declClass.isAlwaysInitialized()) {
            final Label curInstrLabel = getCurInstrLabel();

            // Allocate a register to hold the class
            final GPR classReg = (GPR) L1AHelper.requestRegister(eContext, JvmType.REFERENCE, false);

            // Load classRef into the register
            // Load the class from the statics table
            if (os.isCode32()) {
                helper.writeGetStaticsEntry(new Label(curInstrLabel + "$$ic"),
View Full Code Here


            }
            os.writePOP(helper.BP, disp);
        } else {
            // Load into register
            val.load(eContext);
            final GPR valr = val.getRegister();
            // Store
            os.writeMOV(valr.getSize(), helper.BP, disp, valr);
        }

        // Release
        val.release(eContext);
    }
View Full Code Here

        final Label curInstrLabel = getCurInstrLabel();
        final Label test = new Label(curInstrLabel + "$$cbtest");
        final Label failed = new Label(curInstrLabel + "$$cbfailed");

        assertCondition(ref.isGPR(), "ref must be in a register");
        final GPR refr = ref.getRegister();

        os.writeJMP(test);
        os.setObjectRef(failed);
        // Call SoftByteCodes.throwArrayOutOfBounds
        os.writePUSH(refr);
View Full Code Here

        final RefItem ref = vstack.popRef();

        val.load(eContext);
        idx.loadIf(eContext, ~Item.Kind.CONSTANT);
        ref.load(eContext);
        final GPR refr = ref.getRegister();

        // Check bound
        checkBounds(ref, idx);

        // Store
View Full Code Here

            }
        } else {
            // Load into register
            val.load(eContext);
            if (os.isCode32()) {
                final GPR lsb = val.getLsbRegister(eContext);
                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);
View Full Code Here

            if (countConstOps) {
                counters.getCounter("TODOishift-const").inc();
            }
        }

        final GPR valr = val.getRegister();
        if (isconst) {
            final int imm8 = shift.getValue();
            os.writeShift(operation, valr, imm8);
        } else {
            os.writeShift_CL(operation, valr);
View Full Code Here

     * @param scale
     */
    private final void loadArrayEntryOffset(GPR dst, RefItem ref,
                                            IntItem index, int scale) {
        assertCondition(ref.isGPR(), "ref must be in a register");
        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();
View Full Code Here

            v2 = v1;
            v1 = tmp;
        }

        if (os.isCode32()) {
            final GPR r1_lsb = v1.getLsbRegister(eContext);
            final GPR r1_msb = v1.getMsbRegister(eContext);
            switch (v2.getKind()) {
                case Item.Kind.GPR:
                    os.writeArithOp(operationLsb, r1_lsb, v2
                        .getLsbRegister(eContext));
                    os.writeArithOp(operationMsb, r1_msb, v2
View Full Code Here

        vstack.push(eContext);

        // Claim EAX/RAX, we're going to use it later
        L1AHelper.requestRegister(eContext, helper.AAX);
        // Request tmp register
        final GPR classr = (GPR) L1AHelper.requestRegister(eContext,
            JvmType.REFERENCE, false);

        // Pop
        final IntItem cnt = vstack.popInt();

        // Load the count value
        cnt.load(eContext);
        final GPR cntr = cnt.getRegister();

        // Resolve the class
        writeResolveAndLoadClassToReg(classRef, classr);

        // Release EAX so it can be used by invokeJavaMethod
View Full Code Here

        final IntItem result = (IntItem) L1AHelper.requestWordRegister(
            eContext, JvmType.INT, false);

        // Load
        ref.load(eContext);
        final GPR refr = ref.getRegister();
        final GPR resultr = result.getRegister();

        // Get length
        os.writeMOV(INTSIZE, resultr, refr, arrayLengthOffset);

        // Release
View Full Code Here

TOP

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

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.