smali學習(一)

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;
即包名,字段名和各字段類型。


接下來將學習寄存器的概念


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章