Dalvik反汇编代码解析


                                                          指令格式标识的类型码

助记符

位大小

说明

b

8

8位有符号立即数

c

16,32

常量池索引

f

16

接口常量(仅对静态链接格式有效)

h

16

有符号立即数(32位或者64位数的高值位,低值位为0)

i

32

立即数,有符号整数或32位浮点数

l

64

立即数,有符号整数或64位双精度浮点数

m

16

方法常量(仅对静态链接格式有效)

n

4

4位的立即数

s

16

短整型立即数

t

8,16,32

跳转,分支

x

0

无额外数据

  Dalvik字节码类型描述符

语法

含义

V

void  只用于返回值类型

Z

boolean

B

byte

S

short

C

char

I

int

J

long

F

float

D

double

L

JAVA类   类型

[

数组类型



L类型可以表示Java类型中的任何类,这些类在Java代码中以package.name.ObjectName 方式引用,到了Dalvik汇编代码中

它们以Lpackage/name/ObjectName    ; 形式表示,注意最后有个分号,L表示后面跟着一个Java类,package/name/表示

对象所在的包,ObjectName表示对象的名称,最后分号表示对象名结束。例如:Ljava/lang/String;相当于 java.lang.String


[ 类型可以表示所有基本类型的数组,[后面紧跟基本类型描述符,如[I  表示一个整型一维数组,相当于Java中的int []多个在一起时

可用于多维数组。[[I  表示 int[][]



Dalvik方法的表示

方法格式如下:

Lpackage/name/ObjectName; ->MethodName(III)Z


在这个例子中,Lpackage/name/ObjectName;应该理解为一个类型 MethodName 为具体的方法名,(III)Z 是方法的签名部分,其中

括号内的III 为方法的参数(在此为三个整型参数),Z表示方法的返回类型(boolean类型)


一个复杂的例子:

method (I[[IILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String

转化为:

String method(int ,int [][],int ,String,Object[])


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值