smali学习(一)

来源:互联网 发布:挺进地牢数据 编辑:程序博客网 时间:2024/05/16 11:12

1.   dalvik字节码有两种类型,原始类型和引用类型。对象和数组是引用类型,其它都是原始类型。

原始类型如下

V void,只能用于返回值类型
Z boolean
B byte
S short
C char
I int
J long(64位)
F float
D double(64位)

对象类型表示如下

对象以Lpackage/name/ObjectName;的形式表示。前面的L表示这是一个对象类型,package/name/是该对象所在的包,ObjectName是对象的名字,“;”表示对象名称的结束。相当于java中的package.name.ObjectName。例如:Ljava/lang/String;相当于java.lang.String

数组的表示

 [I——表示一个整型一维数组,相当于java中的int[]。
 对于多维数组,只要增加[就行了。[[I相当于int[][],[[[I相当于int[][][]。注意每一维的最多255个。
 对象数组的表示:[Ljava/lang/String;表示一个String对象数组。   

方法
表示形式:Lpackage/name/ObjectName;->MethodName(III)Z
 Lpackage/name/ObjectName;表示类型,MethodName是方法名。III为参数(在此是3个整型参数),Z是返回类型(bool型)。注意对象后面的冒号
 方法的参数是一个接一个的,中间没有隔开。


一个更复杂的例子:
method(I[[IILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
在java中则为:
String method(int, int[][], int, String, Object[])


字段
表示形式:
Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;
即包名,字段名和各字段类型。


接下来将学习寄存器的概念


0 0
原创粉丝点击