mirror of
https://github.com/revanced/smali.git
synced 2025-06-12 12:17:37 +02:00
Add "support" for odexed instructions using Format3rms
Also, change the name of the invoke-*-range-quick opcodes to invoke-*-quick/range, to be consistent with the naming scheme of non-odexed opcodes git-svn-id: https://smali.googlecode.com/svn/trunk@542 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
This commit is contained in:
@ -263,10 +263,9 @@ public enum Opcode
|
||||
IPUT_WIDE_QUICK((byte)0xf6, "iput-wide-quick", ReferenceType.none, Format.Format22cs, true),
|
||||
IPUT_OBJECT_QUICK((byte)0xf7, "iput-object-quick", ReferenceType.none, Format.Format22cs, true),
|
||||
INVOKE_VIRTUAL_QUICK((byte)0xf8, "invoke-virtual-quick", ReferenceType.none, Format.Format35ms, true),
|
||||
INVOKE_VIRTUAL_RANGE_QUICK((byte)0xf9, "invoke-virtual-range-quick", ReferenceType.none, Format.Format3rms, true),
|
||||
INVOKE_VIRTUAL_QUICK_RANGE((byte)0xf9, "invoke-virtual-quick/range", ReferenceType.none, Format.Format3rms, true),
|
||||
INVOKE_SUPER_QUICK((byte)0xfa, "invoke-super-quick", ReferenceType.none, Format.Format35ms, true),
|
||||
INVOKE_SUPER_RANGE_QUICK((byte)0xfb, "invoke-super-range-quick", ReferenceType.none, Format.Format3rms, true);
|
||||
|
||||
INVOKE_SUPER_QUICK_RANGE((byte)0xfb, "invoke-super-quick/range", ReferenceType.none, Format.Format3rms, true);
|
||||
|
||||
|
||||
private static Opcode[] opcodesByValue;
|
||||
|
@ -126,9 +126,9 @@ public class DeodexUtil {
|
||||
instructionThrowTable.set(Opcode.IPUT_WIDE_QUICK.value & 0xFF);
|
||||
instructionThrowTable.set(Opcode.IPUT_OBJECT_QUICK.value & 0xFF);
|
||||
instructionThrowTable.set(Opcode.INVOKE_VIRTUAL_QUICK.value & 0xFF);
|
||||
instructionThrowTable.set(Opcode.INVOKE_VIRTUAL_RANGE_QUICK.value & 0xFF);
|
||||
instructionThrowTable.set(Opcode.INVOKE_VIRTUAL_QUICK_RANGE.value & 0xFF);
|
||||
instructionThrowTable.set(Opcode.INVOKE_SUPER_QUICK.value & 0xFF);
|
||||
instructionThrowTable.set(Opcode.INVOKE_SUPER_RANGE_QUICK.value & 0xFF);
|
||||
instructionThrowTable.set(Opcode.INVOKE_SUPER_QUICK_RANGE.value & 0xFF);
|
||||
instructionThrowTable.set(Opcode.INVOKE_DIRECT_EMPTY.value & 0xFF);
|
||||
}
|
||||
|
||||
@ -621,7 +621,7 @@ public class DeodexUtil {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case INVOKE_VIRTUAL_RANGE_QUICK:
|
||||
case INVOKE_VIRTUAL_QUICK_RANGE:
|
||||
{
|
||||
Instruction3rms ins = ((Instruction3rms)i.instruction);
|
||||
int registerNum = ins.getStartRegister();
|
||||
@ -716,7 +716,7 @@ public class DeodexUtil {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case INVOKE_SUPER_RANGE_QUICK:
|
||||
case INVOKE_SUPER_QUICK_RANGE:
|
||||
{
|
||||
Instruction3rms ins = ((Instruction3rms)i.instruction);
|
||||
int registerNum = ins.getStartRegister();
|
||||
@ -909,8 +909,8 @@ public class DeodexUtil {
|
||||
case INVOKE_SUPER_QUICK:
|
||||
objectRegisterNum = ((Instruction35ms)instruction).getRegisterD();
|
||||
break;
|
||||
case INVOKE_VIRTUAL_RANGE_QUICK:
|
||||
case INVOKE_SUPER_RANGE_QUICK:
|
||||
case INVOKE_VIRTUAL_QUICK_RANGE:
|
||||
case INVOKE_SUPER_QUICK_RANGE:
|
||||
objectRegisterNum = ((Instruction3rms)instruction).getStartRegister();
|
||||
break;
|
||||
default:
|
||||
|
Reference in New Issue
Block a user