예제 #1
0
 private Insn buildConstInsn(int literal) {
   if (SootToDexUtils.fitsSigned4(literal)) {
     return new Insn11n(Opcode.CONST_4, destinationReg, (byte) literal);
   }
   if (SootToDexUtils.fitsSigned16(literal)) {
     return new Insn21s(Opcode.CONST_16, destinationReg, (short) literal);
   }
   return new Insn31i(Opcode.CONST, destinationReg, literal);
 }
예제 #2
0
 private Insn buildConstWideInsn(long literal) {
   if (SootToDexUtils.fitsSigned16(literal)) {
     return new Insn21s(Opcode.CONST_WIDE_16, destinationReg, (short) literal);
   } else if (SootToDexUtils.fitsSigned32(literal)) {
     return new Insn31i(Opcode.CONST_WIDE_32, destinationReg, (int) literal);
   } else {
     return new Insn51l(Opcode.CONST_WIDE, destinationReg, literal);
   }
 }