Dalvik指令集
- 寄存器的定义
.locals定义寄存器的数量
- 函数的定义
.method函数的开始end函数的结束
- 数据操作指令
move vA,vB将vB寄存器的值赋予vA寄存器move/16 vAA,vBB定义了数据宽度为16位move-object vA,vB用于对象赋值move-object/16 vAA,vBB定义数据宽度
- 返回指令
return vAA返回vAA寄存器的值return-object返回对象
- 数据的定义指令
const数据定义const-string定义一个字符串
- 实例操作指令
check-cast vAA,type@BB将vAA寄存器的对象引用转换成指定类型instance-of vA,vB,type@CC将判断vB寄存器的对象引用是否可以转换为指定类型,是vA=1,反正vA=0new-instance vAA,type@AAA构造一个指定类型的新实例
- 数组操作指令
array-length vA,vB获取vB寄存器中的数组长度,结果赋予vA寄存器new-array vA,vB,type@CC构造指定类型和大小(vB)的数组,结果赋予vA
- 异常
throw vAA抛出vAA寄存器中指定类型的异常
- 指令跳转
goto无条件跳转packed-switch vAA,+BB分支跳转指令,+BB只想递增偏移表sparse-switch vAA,+BB分支跳转,无规律
- if跳转指令
if-testeq等于ne不等于lt小于le小于等于ge大于大于gt大于nez不等于0nqz等于0
- 比较指令
cmp-float比较两个单精度浮点数cmp-double比较双精度浮点数cmp-long比较两个长整型
- 字段操作
- 普通字段以"i"开头
iget读操作iput写操作
- 静态字段以"s"开头
sget读操作sput写操作
- 普通字段以"i"开头
- 方法调用
invoke-virtual调用实例虚方法invoke-super调用实例的父类方法invoke-direct调用实例的直接方法invoke-static调用实例的静态方法
评论区