Dalvik指令集

主要介绍Dalvik指令集的一些基础知识,以后别人以及自己以后查阅.
先介绍下Dalvik字节码的类型、方法与字段表示方法.

类型

Dalvik字节码只包含两种类型,基本类型与引用类型.

语法 含义
V void
Z boolean
B byte
S short
C char
I int
J long
F float
D double
L Java类类型
[ 数组类型
方法

方法的格式如下:
Lpackage/name/ObjectName;->MethodName(III)Z
其中,Lpackage/name/ObjectName是对应类的类型,与方法名MethodName用;相隔.括号中为函数参数,最后的Z为函数返回类型.

字段

与方法类似,格式如下:
Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;

Dalvik指令集

下面介绍具体类型的指令。在介绍之前,先熟悉下指令特点

  • 参数从目标(destination)到源(source)的方式
  • 64位常规类型字节码添加 -wide后缀
  • 根据字节码布局与选项不同,一些字节码添加了字节码后缀以消除歧义。这些后缀通过在字节码主名称后添加斜杠“/”来分割开。
空指令

无实际操作,一般用于指令对齐

数据操作指令

move vA, vB
move/from16 vAA, VBBBB
move/16 VAAAA,VBBBB
move-wide VA,VB
move-object VA,VB
move-result VAA
move-result-wide VAA
move-result-object VAA
move-exception VAA

返回指令