@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcodeUnit(), makeByte(insn.getA(), insn.getB()))); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { // See above. int opcode = insn.getOpcode(); int shift = (opcode == Opcodes.CONST_HIGH16) ? 16 : 48; short literal = (short) (insn.getLiteral() >> shift); out.write(codeUnit(opcode, insn.getA()), literal); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { int index = insn.getIndex(); out.write( codeUnit(insn.getOpcode(), insn.getA()), unit0(index), unit1(index)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { short relativeTarget = insn.getTargetUnit(out.cursor()); out.write(insn.getOpcodeUnit(), relativeTarget); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcode(), insn.getA()), insn.getLiteralUnit()); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { int literal = insn.getLiteralInt(); out.write( codeUnit(insn.getOpcode(), insn.getA()), unit0(literal), unit1(literal)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { long literal = insn.getLiteral(); out.write( codeUnit(insn.getOpcode(), insn.getA()), unit0(literal), unit1(literal), unit2(literal), unit3(literal)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcode(), insn.getA()), insn.getBUnit()); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { int relativeTarget = insn.getTarget(out.cursor()); out.write(insn.getOpcodeUnit(), unit0(relativeTarget), unit1(relativeTarget)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcodeUnit(), makeByte(insn.getA(), insn.getLiteralNibble()))); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { int index = insn.getIndex(); out.write( codeUnit(insn.getOpcode(), insn.getA()), unit0(index), unit1(index)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { short relativeTarget = insn.getTargetUnit(out.cursor()); out.write(codeUnit(insn.getOpcode(), insn.getA()), relativeTarget); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcode(), makeByte(insn.getA(), insn.getB())), insn.getIndexUnit()); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcode(), insn.getA()), codeUnit(insn.getB(), insn.getC())); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { out.write( codeUnit(insn.getOpcode(), insn.getA()), codeUnit(insn.getB(), insn.getLiteralByte())); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { int relativeTarget = insn.getTarget(out.cursor()); out.write( codeUnit(insn.getOpcode(), insn.getA()), unit0(relativeTarget), unit1(relativeTarget)); } },
@Override public void encode(DecodedInstruction insn, CodeOutput out) { short relativeTarget = insn.getTargetUnit(out.cursor()); out.write( codeUnit(insn.getOpcode(), makeByte(insn.getA(), insn.getB())), relativeTarget); } },
/** * Helper method that encodes any of the three-unit register-range formats. */ private static void encodeRegisterRange(DecodedInstruction insn, CodeOutput out) { out.write(codeUnit(insn.getOpcode(), insn.getRegisterCount()), insn.getIndexUnit(), insn.getAUnit()); }
@Override public void encode(DecodedInstruction insn, CodeOutput out) { short relativeTarget = insn.getTargetUnit(out.cursor()); out.write( codeUnit(insn.getOpcode(), makeByte(insn.getA(), insn.getB())), relativeTarget); } },
/** * Helper method that encodes any of the register-list formats. */ private static void encodeRegisterList(DecodedInstruction insn, CodeOutput out) { out.write(codeUnit(insn.getOpcode(), makeByte(insn.getE(), insn.getRegisterCount())), insn.getIndexUnit(), codeUnit(insn.getA(), insn.getB(), insn.getC(), insn.getD())); }