Examples of GPR


Examples of org.jnode.assembler.x86.X86Register.GPR

            final RefItem tmp = v2;
            v2 = v1;
            v1 = tmp;
        }

        final GPR r1 = v1.getRegister();

        switch (v2.getKind()) {
            case Item.Kind.GPR:
                os.writeCMP(r1, v2.getRegister());
                break;
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

            final IntItem tmp = v2;
            v2 = v1;
            v1 = tmp;
        }

        final GPR r1 = v1.getRegister();

        switch (v2.getKind()) {
            case Item.Kind.GPR:
                os.writeCMP(r1, v2.getRegister());
                break;
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

                // Actual jump
                os.writeJMP(helper.getInstrLabel(address));
            }
        } else {
            val.load(eContext);
            final GPR valr = val.getRegister();
            // flush vstack before jumping
            vstack.push(eContext);

            os.writeTEST(valr, valr);
            os.writeJCC(helper.getInstrLabel(address), jccOpcode);
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

                final IntItem tmp = v2;
                v2 = v1;
                v1 = tmp;
            }

            final GPR r1 = v1.getRegister();
            switch (v2.getKind()) {
                case Item.Kind.GPR:
                    os.writeIMUL(r1, v2.getRegister());
                    break;
                case Item.Kind.CONSTANT:
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

            // It is an interface, do it the hard way

            // Load reference
            final RefItem ref = vstack.popRef();
            ref.load(eContext);
            final GPR refr = ref.getRegister();

            // Allocate tmp registers
            final GPR classr = (GPR) L1AHelper.requestRegister(eContext,
                JvmType.REFERENCE, false);
            final GPR cntr = (GPR) L1AHelper.requestRegister(eContext,
                JvmType.INT, false);
            final GPR tmpr = (GPR) L1AHelper.requestRegister(eContext,
                JvmType.REFERENCE, false);
            final Label curInstrLabel = getCurInstrLabel();

            /* Objectref is already on the stack */
            writeResolveAndLoadClassToReg(classRef, classr);
            helper.writeClassInitialize(curInstrLabel, classr, tmpr, resolvedType);

            final Label trueLabel = new Label(curInstrLabel + "io-true");
            final Label endLabel = new Label(curInstrLabel + "io-end");

            /* Is instanceof? */
            instanceOf(refr, classr, tmpr, cntr, trueLabel, false);

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

            /* Not instanceof */
            // TODO: use setcc instead of jumps
            os.writeXOR(resultr, resultr);
            os.writeJMP(endLabel);

            os.setObjectRef(trueLabel);
            os.writeMOV_Const(resultr, 1);

            // Push result
            os.setObjectRef(endLabel);
            ref.release(eContext);

            vstack.push(result);

            // Release
            pool.release(classr);
            pool.release(tmpr);
            pool.release(cntr);
        } else {
            // It is a class, do the fast way
            //vstack.push(eContext); // just a (slow) test

            // Load reference
            final RefItem ref = vstack.popRef();
            ref.load(eContext);
            final GPR refr = ref.getRegister();

            // Allocate tmp registers
            final GPR tmpr = (GPR) L1AHelper.requestRegister(eContext,
                JvmType.REFERENCE, false);
            final IntItem result = (IntItem) L1AHelper.requestWordRegister(
                eContext, JvmType.INT, true);

            // Is instanceof
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

        final RefItem ref = vstack.popRef();

        // Load
        idx.load(eContext);
        ref.load(eContext);
        GPR idxr = idx.getRegister();
        final GPR refr = ref.getRegister();

        // Verify
        checkBounds(ref, idx);

        // Get data
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

        v1.load(eContext);

        // Claim result reg
        final IntItem result = (IntItem) L1AHelper.requestWordRegister(
            eContext, JvmType.INT, false);
        final GPR resr = result.getRegister();

        final Label curInstrLabel = getCurInstrLabel();
        final Label ltLabel = new Label(curInstrLabel + "lt");
        final Label endLabel = new Label(curInstrLabel + "end");

        // Calculate
        os.writeXOR(resr, resr);
        if (os.isCode32()) {
            final GPR v2_lsb = v2.getLsbRegister(eContext);
            final GPR v2_msb = v2.getMsbRegister(eContext);
            final GPR v1_lsb = v1.getLsbRegister(eContext);
            final GPR v1_msb = v1.getMsbRegister(eContext);
            os.writeSUB(v1_lsb, v2_lsb);
            os.writeSBB(v1_msb, v2_msb);
            os.writeJCC(ltLabel, X86Constants.JL); // JL
            os.writeOR(v1_lsb, v1_msb);
        } else {
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

        counters.getCounter("ldc-class").inc();
        // Push all, since we're going to call other methods
        vstack.push(eContext);

        L1AHelper.requestRegister(eContext, helper.AAX);
        final GPR classr = (GPR) L1AHelper.requestRegister(eContext,
            JvmType.REFERENCE, false);

        // Resolve the class
        writeResolveAndLoadClassToReg(classRef, classr);
View Full Code Here

Examples of org.jnode.assembler.x86.X86Register.GPR

     * Push the given VmType on the stack.
     */
    public final void visit_ldc(VmType<?> value) {
        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

Examples of org.jnode.assembler.x86.X86Register.GPR

            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
TOP
Copyright © 2018 www.massapi.com. 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.