Smali语法汇总(二)

Opcode

操作码(hex)

Opcode name

操作码名称

Explanation

说明

Example

示例

0F

return vx

返回在vx寄存器的值。

0F00 - return v0

返回v0寄存器中的值。

10

return-wide vx

返回在vx,vx+1寄存器的double/long值。

1000 - return-wide v0

返回v0,v1寄存器中的double/long值。

11

return-object vx

返回在vx寄存器的对象引用。

1100 - return-object v0

返回v0寄存器中的对象引用。

12

const/4 vx, lit4

存入4位常量到vx。

1221 - const/4 v1, #int 2

存入int型常量2到v1。目的寄存器在第二个字节的低4位,常量2在更高的4位。

13

const/16 vx, lit16

存入16位常量到vx。

1300 0A00 - const/16 v0, #int 10

存入int型常量10到v0。

14

const vx, lit32

存入int 型常量到vx。

1400 4E61 BC00 - const v0, #12345678 // #00BC614E

存入常量12345678到v0。

15

const/high16 v0, lit16

存入16位常量到最高位寄存器,用于初始化float值。

1500 2041 - const/high16 v0, #float 10.0 // #41200000

存入float常量10.0到v0。该指令最高支持16位浮点数。

16

const-wide/16 vx, lit16

存入int常量到vx,vx+1寄存器,扩展int型常量为long常量。

1600 0A00 - const-wide/16 v0, #long 10

存入long常量10到v0,v1寄存器。

17

const-wide/32 vx, lit32

存入32位常量到vx,vx+1寄存器,扩展int型常量到long常量。

1702 4e61 bc00 - const-wide/32 v2, #long 12345678 // #00bc614e

存入long常量12345678到v2,v3寄存器。

18

const-wide vx, lit64

存入64位常量到vx,vx+1寄存器。

1802 874b 6b5d 54dc 2b00- const-wide v2, #long 12345678901234567 // #002bdc545d6b4b87

存入long常量12345678901234567到v2,v3寄存器。

19

const-wide/high16 vx, lit16

存入16位常量到最高16位的vx,vx+1寄存器,用于初始化double 值。

1900 2440 - const-wide/high16 v0, #double 10.0 // #402400000

存入double常量10.0到v0,v1。

1A

const-string vx, 字符串ID

存入字符串常量引用到vx,通过字符串ID字符串

1A08 0000 - const-string v8, "" // string@0000

存入string@0000(字符串表#0条目)的引用到v8。

1B

const-string-jumbo

未知4

1C

const-class vx, 类型ID

存入类对象常量到vx,通过类型ID类型(如Object.class)。

1C00 0100 - const-class v0, Test3 // type@0001

存入Test3.class(类型ID表#1条目)的引用到v0。

1D

monitor-enter vx

获得vx寄存器中的对象引用的监视器。

1D03 - monitor-enter v3

获得v3寄存器中的对象引用的监视器。


你可能感兴趣的:(Smali)