Package com.android.dx.rop.code

Examples of com.android.dx.rop.code.RegisterSpecList


    }

    /** {@inheritDoc} */
    @Override
    public void writeTo(AnnotatedOutput out, DalvInsn insn) {
        RegisterSpecList regs = insn.getRegisters();

        write(out,
              opcodeUnit(insn, 0),
              (short) regs.get(0).getReg(),
              (short) regs.get(1).getReg());
    }
View Full Code Here


    }

    /** {@inheritDoc} */
    @Override
    public String insnArgString(DalvInsn insn) {
        RegisterSpecList regs = insn.getRegisters();
        return regs.get(0).regString() + ", " + regs.get(1).regString();
    }
View Full Code Here

    }

    /** {@inheritDoc} */
    @Override
    public boolean isCompatible(DalvInsn insn) {
        RegisterSpecList regs = insn.getRegisters();

        return (insn instanceof SimpleInsn) &&
            (regs.size() == 2) &&
            unsignedFitsInByte(regs.get(0).getReg()) &&
            unsignedFitsInShort(regs.get(1).getReg());
    }
View Full Code Here

    }

    /** {@inheritDoc} */
    @Override
    public void writeTo(AnnotatedOutput out, DalvInsn insn) {
        RegisterSpecList regs = insn.getRegisters();
        write(out,
              opcodeUnit(insn, regs.get(0).getReg()),
              (short) regs.get(1).getReg());
    }
View Full Code Here

    }

    /** {@inheritDoc} */
    @Override
    public String insnArgString(DalvInsn insn) {
        RegisterSpecList regs = insn.getRegisters();
        int size = regs.size();
        StringBuilder sb = new StringBuilder(30);

        sb.append("{");

        switch (size) {
            case 0: {
                // Nothing to do.
                break;
            }
            case 1: {
                sb.append(regs.get(0).regString());
                break;
            }
            default: {
                RegisterSpec lastReg = regs.get(size - 1);
                if (lastReg.getCategory() == 2) {
                    /*
                     * Add one to properly represent a list-final
                     * category-2 register.
                     */
                    lastReg = lastReg.withOffset(1);
                }
               
                sb.append(regs.get(0).regString());
                sb.append("..");
                sb.append(lastReg.regString());
            }
        }

View Full Code Here

  private void calculateInsnsIfNecessary() {
    if (insns != null) {
      return;
    }

    RegisterSpecList registers = getRegisters();
    int sz = registers.size();

    insns = new SimpleInsn[sz];

    for (int i = 0, outAt = 0; i < sz; i++) {
      RegisterSpec src = registers.get(i);
      insns[i] = moveInsnFor(src, outAt);
      outAt += src.getCategory();
    }
  }
View Full Code Here

  public DalvInsn withRegisters(RegisterSpecList registers) {
    return new HighRegisterPrefix(getPosition(), registers);
  }

  public SimpleInsn[] getMoveInstructions() {
    RegisterSpecList registers = getRegisters();
    int sz = registers.size();
    SimpleInsn[] result = new SimpleInsn[sz];

    for (int i = 0, outAt = 0; i < sz; i++) {
      RegisterSpec src = registers.get(i);
      result[i] = moveInsnFor(src, outAt);
      outAt += src.getCategory();
    }

    return result;
View Full Code Here

        if (!((cst instanceof CstMethodRef) ||
              (cst instanceof CstType))) {
            return false;
        }

        RegisterSpecList regs = ci.getRegisters();
        int sz = regs.size();

        if (sz == 0) {
            return true;
        }

        int first = regs.get(0).getReg();
        int next = first;

        if (!unsignedFitsInShort(first)) {
            return false;
        }

        for (int i = 0; i < sz; i++) {
            RegisterSpec one = regs.get(i);
            if (one.getReg() != next) {
                return false;
            }
            next += one.getCategory();
        }
View Full Code Here

    }

    /** {@inheritDoc} */
    @Override
    public void writeTo(AnnotatedOutput out, DalvInsn insn) {
        RegisterSpecList regs = insn.getRegisters();
        int sz = regs.size();
        int cpi = ((CstInsn) insn).getIndex();
        int firstReg;
        int count;

        if (sz == 0) {
            firstReg = 0;
            count = 0;
        } else {
            int lastReg = regs.get(sz - 1).getNextReg();
            firstReg = regs.get(0).getReg();
            count = lastReg - firstReg;
        }

        write(out,
              opcodeUnit(insn, count),
View Full Code Here

    }

    /** {@inheritDoc} */
    @Override
    public String insnArgString(DalvInsn insn) {
        RegisterSpecList regs = insn.getRegisters();
        return regs.get(0).regString();
    }
View Full Code Here

TOP

Related Classes of com.android.dx.rop.code.RegisterSpecList

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.