Dalvik指令集

类型

语法含义
Vvoid,只用于返回值类型
Zboolean
Bbyte
Sshort
Cchar
Iint
Jlong
Ffloat
Ddouble
LJava类类型
[数组类型

方法

方法格式:Lpackage/name/ObjectName;->MethodName(III)Z

Lpackage/name/ObjectName 所属类

MethodName 方法名

III 方法的参数(三个整型参数)

Z 方法的返回类型(boolean类型)

字段(变量)

Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;

Lpackage/name/ObjectName 所属类

FieldName 字段名

Ljava/lang/String; 字段类型

空操作指令

nop

 

数据操作指令

返回指令

数据定义指令

数据定义指令用来定义程序中用到的常量、字符串、类等数据。基础字节码为const

"const/4vA,#+B" 将数值符号扩展为32位后赋给寄存器vA。

"const/16 VAA,#+BBBB" 将数值符号扩展为32位后赋给寄存器vAA。

"const vAA,#+BBBBBBBB" 将数值赋给寄存器vAA。

"const/hight16 vAA,#+BBBB0000" 将数值右边零扩展为32位后赋给寄存器vAA。

#"const-wide/16 vAA,#+BBBB" 将数值符号扩展为64位后赋给寄存器对vAA。

#"const-wide/32 vAA,#+BBBBBBBB" 将数值符号扩展为64位后赋给寄存器对vAA。

"const-wide vAA,#+BBBBBBBBBBBBBBBB" 将数值赋给寄存器对vAA。

"const-wide/high16 vAA,#+BBBB000000000000" 将数值右边零扩展为64位后赋给寄存器对vAA

"const-string vAA,string@BBBB" 通过字符串索引构造一个字符串并赋给寄存器vAA。

"const-class vAA,type@BBBB" 通过类型索引获取一个类引用并赋给寄存器vAA。

"const-class/jumbo vAAAA,type@BBBBBBBB" 通过给定的类型索引获取一个类引用并赋给寄存器vAAAA。这条指令占用俩个字节,值为0x00ff(Android 4.0 新增)

 

 

 

锁指令

实例操作指令

数据操作指令

异常指令

跳转指令

比较指令

字段操作指令

方法调用指令

调用类实例的方法,基础指令为invoke

形式:"invoke-king{vC,vD,vE,vF,vG},mesh@BBBB"和"invoke-kind/range{vCCCC..vNNNN},mesh@BBBB"

后者在设置参数寄存器时使用了range来指定寄存器的范围。

"invoke-virtual"或"invoke-virtual/range" 调用实例的虚方法。

"invoke-super"或"invoke-super/range" 调用实例的父方法。

"invoke-direct"或"invoke-direct/range" 调用实例的直接方法。

"invoke-static"或"invoke-static/range" 调用实例的静态方法。

"invoke-interface"或"invoke-interface/range" 调用实例的接口方法。

Android4.0新增"invoke-kind/jumpbo{vCCCC..vNNN},mesh@BBBBBBBB"—寄存器值与指令的索引取值范围更大。

方法调用的返回值必须使用move-result*指令来获取。

invoke-static{},Landroid/os/Parcel;->obtain()Landroid/os/Parcel;

move-resule-object v0

数据转换指令

数据运算指令

AA

转载于:https://www.cnblogs.com/msnow/p/5351353.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值