Package org.jnode.assembler

Examples of org.jnode.assembler.Label


    private int prev_addr = 0;

    public void checkLabel(int address) {
        for (int i = prev_addr + 1; i <= address; i++) {
            Label l = addressLabels[i];
            if (l == null) {
                l = getInstrLabel(i);
            }
            os.setObjectRef(l);
        }
View Full Code Here


        // Pop fpu stack twice (FUCOMPP)
        fpuStack.pop();
        fpuStack.pop();

        final Label gtLabel = new Label(curInstrLabel + "gt");
        final Label ltLabel = new Label(curInstrLabel + "lt");
        final Label endLabel = new Label(curInstrLabel + "end");
        if (os.isCode32()) {
            os.writeJCC(gtLabel, X86Constants.JA);
            os.writeJCC(ltLabel, X86Constants.JB);
        } else {
            // Emulate JA
View Full Code Here

    protected CompiledMethod doCompile(VmMethod method, NativeStream os,
                                       int level, boolean isBootstrap) {
        final CompiledMethod cm = new CompiledMethod(level);
        try {
            if (method.isNative()) {
                Object label = new Label(method.getMangledName());
                cm.setCodeStart(os.getObjectRef(label));
            } else {
                // Create the visitor
                CompilerBytecodeVisitor bcv = getBytecodeVisitor(method, cm, os, level, isBootstrap);
View Full Code Here

                        os.setWord(fldOffset, 0);
                    } else if (value instanceof UnboxedObject) {
                        final UnboxedObject uobj = (UnboxedObject) value;
                        os.setWord(fldOffset, uobj.toLong());
                    } else if (value instanceof Label) {
                        final Label lbl = (Label) value;
                        bis.setObjectRef(fldOffset, lbl);
                    } else {
                        throw new BuildException("Cannot handle magic type " + value.getClass().getName());
                    }
                } else {
View Full Code Here

        os.writeMOVSXD(X86Register.R14, X86Register.R14d);
        os.writePUSH(X86Register.RAX);
        os.writePUSH(X86Register.R8);
        os.writeMOV_Const(X86Register.R14d, 0x80000000);
        os.writeNOP();
        final Label label = new Label("label");
        os.writeMOV_Const(X86Register.RDI, label);
        os.writeNOP();
        os.setObjectRef(label);
        os.writePUSH(X86Register.RBX);
        os.writePUSH(X86Register.RCX);
View Full Code Here

        }
        if (true) {
            return;
        }

        final Label label = new Label("label");
        os.writeADD(X86Register.EDX, X86Register.EAX);
        os.setObjectRef(label);
        os.writeNOP();
        os.writeLOOP(label);
        os.writeTEST_AL(0xff);
        os.writeTEST(X86Register.EBX, 0xABCD1234);
        os.writeCMPXCHG_EAX(X86Register.EDX, 4, X86Register.ECX, false);
        os.writeLEA(X86Register.ESI, X86Register.ESI, X86Register.EBX, 8, 4);
        os.writeCMPXCHG_EAX(X86Register.EDX, 4, X86Register.ECX, true);
        os.writeJMP(label, 2, false);
        os.writeCALL(label, 4, false);
        os.writeTEST(X86Register.ECX, X86Register.EBX);
        os.writeCMOVcc(X86Constants.JLE, X86Register.EAX, X86Register.EBX);
        os.writeCMOVcc(X86Constants.JE, X86Register.EAX, X86Register.EBX, 5);
        os.writeADD(BITS32, X86Register.EAX, 28, 11);
        os.writeCALL(X86Register.EAX, 28);
        os.writeCMP(X86Register.EAX, X86Register.ECX, 4);
        os.writeCMP(X86Register.EAX, 4, X86Register.ECX);
        os.writePrefix(X86Constants.FS_PREFIX);
        os.writeCMP_MEM(X86Register.ESP, 24);
        os.writeMOV_Const(BITS32, X86Register.ESP, 4, 24);
        os.writeSBB(X86Register.EDX, 5);
        os.writeSBB(X86Register.EDX, 305);

        final Label jt = new Label("Jumptable");
        os.writeSHL(X86Register.ECX, 2);
        os.writeJMP(jt, X86Register.ECX);
        os.setObjectRef(jt);
        os.write32(0x1234ABCD);
        os.write32(0xFFEEDDCC);
View Full Code Here

            final VmProcessor proc = createProcessor(vm, clsMgr.getSharedStatics(),
                clsMgr.getIsolatedStatics());
            log("Building for " + proc.getCPUID());

            final Label clInitCaller = new Label("$$clInitCaller");
            VmType<?> systemClasses[] = VmType.initializeForBootImage(clsMgr);
            for (int i = 0; i < systemClasses.length; i++) {
                clsMgr.addLoadedClass(systemClasses[i].getName(),
                    systemClasses[i]);
            }
View Full Code Here

                // Just do nothing
            } else if (val instanceof UnboxedObject) {
                final UnboxedObject uobj = (UnboxedObject) val;
                statics.setAddress(idx, uobj);
            } else if (val instanceof Label) {
                final Label lbl = (Label) val;
                statics.setAddress(idx, lbl);
            } else {
                throw new BuildException("Cannot handle magic type " + val.getClass().getName());
            }
        } else {
View Full Code Here

            final Symbol sym = elf.getSymbol(i);
            final Section sec = sym.getSection();
            if (sec == text) {
                // System.out.println(sym);
                X86BinaryAssembler.X86ObjectRef ref = (X86BinaryAssembler.X86ObjectRef) os
                    .getObjectRef(new Label(sym.getName()));
                ref.setPublic();
                if (!sym.isUndef()) {
                    // System.out.println("Defined symbol at " + sym.getValue()
                    // + " [" + sym.getName() + "]");
                    ref.setOffset((int) sym.getValue() + start);
View Full Code Here

    private final void resolve_R386_32(long addr, String symName,
                                       boolean hasSymName) throws UnresolvedObjectRefException {
        if (!hasSymName) {
            os.set32((int) addr, os.get32((int) addr) + start + baseAddr);
        } else {
            final NativeStream.ObjectRef ref = os.getObjectRef(new Label(
                symName));
            if (ref.isResolved()) {
                os.set32((int) addr, ref.getOffset() + baseAddr);
            } else {
                os.set32((int) addr, -baseAddr);
View Full Code Here

TOP

Related Classes of org.jnode.assembler.Label

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.