Package org.jnode.jnasm.assembler

Examples of org.jnode.jnasm.assembler.Address


                break;
            case RC_ADDR:
                stream.writeXOR(getReg(0), getInt(1));
                break;
            case RE_ADDR:
                Address ind = getAddress(1);
                stream.writeXOR(getReg(0), getRegister(ind.getImg()), ind.disp);
                break;
            case ER_ADDR:
                ind = getAddress(0);
                stream.writeXOR(getRegister(ind.getImg()), ind.disp, getReg(1));
                break;
            case EC_ADDR:
                ind = getAddress(0);
                stream.writeXOR(operandSize, getRegister(ind.getImg()), ind.disp, getInt(1));
                break;
            default:
                reportAddressingError(XOR_ISN, addr);
        }
    }
View Full Code Here


                if (o instanceof Integer) {
                    ret |= CON_ARG << DISP * i;
                } else if (o instanceof Register) {
                    ret |= REG_ARG << DISP * i;
                } else if (o instanceof Address) {
                    Address ind = (Address) o;
                    if (ind.segment) {
                        ret |= SEG_ARG << DISP * i;
                    } else if (ind.reg != null && ind.sreg != null) {
                        ret |= SCL_ARG << DISP * i;
                    } else if (ind.reg != null) {
View Full Code Here

    private void emitMOVD() {
        int addr = getAddressingMode(2);
        switch (addr) {
            case RE_ADDR:
                X86Register.MMX r = getRegMMX(0);
                Address ind = getAddress(1);
                stream.writeMOVD(operandSize, r, getRegister(ind.getImg()), ind.disp);
                break;
            case ER_ADDR:
                ind = getAddress(0);
                r = getRegMMX(1);
                stream.writeMOVD(operandSize, getRegister(ind.getImg()), ind.disp, r);
                break;
            default:
                reportAddressingError(MOVD_ISN, addr);
        }
    }
View Full Code Here

                X86Register.MMX r2 = getRegMMX(1);
                stream.writeMOVQ(r1, r2);
                break;
            case RE_ADDR:
                X86Register.MMX r = getRegMMX(0);
                Address ind = getAddress(1);
                stream.writeMOVQ(operandSize, r, getRegister(ind.getImg()), ind.disp);
                break;
            case RA_ADDR:
                r = getRegMMX(0);
                ind = getAddress(1);
                stream.writeMOVQ(operandSize, r, ind.disp);
View Full Code Here

                break;
            case RC_ADDR:
                stream.writeADC(getReg(0), getInt(1));
                break;
            case RE_ADDR:
                Address ind = getAddress(1);
                stream.writeADC(getReg(0), getRegister(ind.getImg()), ind.disp);
                break;
            case ER_ADDR:
                ind = getAddress(0);
                stream.writeADC(getRegister(ind.getImg()), ind.disp, getReg(1));
                break;
            case EC_ADDR:
                ind = getAddress(0);
                stream.writeADC(operandSize, getRegister(ind.getImg()), ind.disp, getInt(1));
                break;
            default:
                reportAddressingError(ADC_ISN, addr);
        }
    }
View Full Code Here

                break;
            case RC_ADDR:
                stream.writeADD(getReg(0), getInt(1));
                break;
            case RE_ADDR:
                Address ind = getAddress(1);
                stream.writeADD(getReg(0), getRegister(ind.getImg()), ind.disp);
                break;
            case RA_ADDR:
                ind = getAddress(1);
                stream.writeADD_MEM(getReg(0), ind.disp);
                break;
            case ER_ADDR:
                ind = getAddress(0);
                stream.writeADD(getRegister(ind.getImg()), ind.disp, getReg(1));
                break;
            case EC_ADDR:
                ind = getAddress(0);
                stream.writeADD(operandSize, getRegister(ind.getImg()), ind.disp, getInt(1));
                break;
            case AC_ADDR:
                stream.writeADD(operandSize, getAddress(0).disp, getInt(1));
                break;
            case GC_ADDR:
                ind = getAddress(0);
                stream.writeADD(operandSize, (SR) X86Register.getRegister(ind.getImg()), ind.disp, getInt(1));
                break;
            default:
                reportAddressingError(ADD_ISN, addr);
        }
    }
View Full Code Here

                break;
            case RC_ADDR:
                stream.writeAND(getReg(0), getInt(1));
                break;
            case RE_ADDR:
                Address ind = getAddress(1);
                stream.writeAND(getReg(0), getRegister(ind.getImg()), ind.disp);
                break;
            case ER_ADDR:
                ind = getAddress(0);
                stream.writeAND(getRegister(ind.getImg()), ind.disp, getReg(1));
                break;
            case EC_ADDR:
                ind = getAddress(0);
                stream.writeAND(operandSize, getRegister(ind.getImg()), ind.disp, getInt(1));
                break;
            case AC_ADDR:
                stream.writeAND(operandSize, getAddress(0).disp, getInt(1));
                break;
            case GC_ADDR:
                ind = getAddress(0);
                stream.writeAND(operandSize, (SR) X86Register.getRegister(ind.getImg()), ind.disp, getInt(1));
                break;
            default:
                reportAddressingError(AND_ISN, addr);
        }
    }
View Full Code Here

            String id = ((Identifier) o1).name;
            Label lab = labels.get(id);
            lab = (lab == null) ? new Label(id) : lab;
            stream.writeCALL(lab);
        } else if (o1 instanceof Address) {
            Address ind = (Address) o1;
            if (ind.reg != null && ind.sreg != null) {
                throw new IllegalArgumentException("Scaled is not supported for call ");
            } else if (ind.reg != null) {
                if ("far".equals(this.instruction.getJumpType())) {
                    stream.writeCALL_FAR(getRegister(ind.getImg()), ind.disp);
                } else {
                    stream.writeCALL(getRegister(ind.getImg()), ind.disp);
                }
            } else if (ind.sreg != null) {
                stream.writeCALL(getRegister(ind.sreg), ind.scale, ind.disp);
            } else {
                throw new IllegalArgumentException("Absolute is not supported for call ");
View Full Code Here

                break;
            case RC_ADDR:
                stream.writeCMP_Const(getReg(0), getInt(1));
                break;
            case RE_ADDR:
                Address ind = getAddress(1);
                stream.writeCMP(getReg(0), getRegister(ind.getImg()), ind.disp);
                break;
            case RA_ADDR:
                ind = getAddress(1);
                stream.writeCMP_MEM(getReg(0), ind.disp);
                break;
            case RG_ADDR:
                ind = getAddress(1);
                stream.writeCMP(getReg(0), (SR) X86Register.getRegister(ind.getImg()), ind.disp);
                break;
            case ER_ADDR:
                ind = getAddress(0);
                stream.writeCMP(getRegister(ind.getImg()), ind.disp, getReg(1));
                break;
            case EC_ADDR:
                ind = getAddress(0);
                stream.writeCMP_Const(operandSize, getRegister(ind.getImg()), ind.disp, getInt(1));
                break;
            case AC_ADDR:
                ind = getAddress(0);
                stream.writeCMP_MEM(operandSize, ind.disp, getInt(1));
                break;
            case GC_ADDR:
                ind = getAddress(0);
                stream.writeCMP_Const(operandSize, (SR) X86Register.getRegister(ind.getImg()), ind.disp, getInt(1));
                break;
            default:
                reportAddressingError(CMP_ISN, addr);
        }
    }
View Full Code Here

        switch (addr) {
            case R_ADDR:
                stream.writeDEC(getReg(0));
                break;
            case E_ADDR:
                Address ind = getAddress(0);
                stream.writeDEC(operandSize, getRegister(ind.getImg()), ind.disp);
                break;
            default:
                reportAddressingError(DEC_ISN, addr);
        }
    }
View Full Code Here

TOP

Related Classes of org.jnode.jnasm.assembler.Address

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.