mirror of
https://github.com/revanced/smali.git
synced 2025-05-28 03:40:12 +02:00

Previously the offset of the method prototype was 3 bytes from the instruction start for both instructions. This would put it somewhere in the middle of the register values and method reference. Changed it to the correct offset which is 6 bytes in both cases. 45cc Instruction Format op(8 bits) number_of_regs(4 bits) reg_g(4 bits) method_reference(16 bits) reg_d(4 bits) reg_c(4 bits) reg_f(4 bits) ref_e(4 bits) method_prototype(16 bits) Example of invoke-polymorphic using 45cc Instruction: fa302f0021030800 DexDump: invoke-polymorphic {v1, v2, v3}, Ljava/lang/invoke/MethodHandle; .invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (II)Ljava/lang/Object; // method@002f, proto@0008 4rcc Instruction Format op(8 bits) number_of_regs(8 bits) method_reference(16 bits) start_register(16 bits) method_prototype(16 bits) Example of invoke-polymorphic using 4rcc Instruction: fb092f0000000800 DexDump: invoke-polymorphic/range {v0, v1, v2, v3, v4, v5, v6, v7, v8}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;) Ljava/lang/Object;, (IIIIIIILjava/lang/String;)Ljava/lang/Object; // method@002f, proto@0008