#回顾 语法学习五中就有如下的数据定义:
1move v0,p1 #赋值,v0=v1 2const/4 v1,0x1 #定义常量,v1=1 3const-string v2,"MainActivity" #定义常量字符串,v2="MainActivity" 4.local v1,"b1":Z #定义局部变量,寄存器声明
#数据定义DEMO java代码:
1private void test(){ 2 int a = 1; 3 int b = 7; 4 int c = 254; 5 int d = 2345; 6 int d1 = 65538; 7 long e = 12435465657677L; 8 float f = 123235409234.09097945F 9 double g = 111343333454999999999.912384376; 10}
对应的smali代码:
1.method private test()V 2 .locals 10 3 .prologue 4 .line 49 5 const/4 v0,0x1 #int a=1 6 7 .line 50 8 .local v0,"a":I 9 const/4 v1,0x7 #int b=7 10 11 .line51 12 .local v1,"b":I 13 const/16 v2,0xfe #int c =254 14 15 .line 52 16 .local v2,"c":I 17 const/16 v3,0x929 #int d=2345 18 19 20 .line 53 21 .local v3,"d":I 22 const v4,0x10002 #int d1=65538 23 24 .line 55 25 .local v4,"d1":I 26 const wide v6,0xb4f5b835d4dl #llong e = 12435465657677L 27 28 .line 56 29 .local v6,"e":J 30 const v5,0x51e58b39 #float f = 123235409234.09097945F 31 32 .line 57 33 .local v5,"f":F 34 const-wide v8,0x441824cbef6b9491L #1.11343333455E20 35 36 .line 58 37 .local v8,"g":D 38 return-void 39.end method
#数据定义格式 const/4 vA,#+B 将数组扩展为32位后赋给寄存器vA
const/16 vAA,#+BBBB
const vAA,#+BBBBBBBB 将数组赋给寄存器vAA
const-wide/16 vAA,#+BBBBB 将数值扩展为64 位后赋给寄存器vA
const-string vAA,string@BBBB 将字符串索引构造一个字符串并赋给vAA
const-class vAA,type@BBBB 通过类型索引获取一个类的引用并赋给vAA