Smali语法学习六

#回顾 语法学习五中就有如下的数据定义:

move v0,p1                                         #赋值,v0=v1
const/4 v1,0x1                                    #定义常量,v1=1
const-string v2,"MainActivity"             #定义常量字符串,v2="MainActivity"
.local v1,"b1":Z                                   #定义局部变量,寄存器声明

#数据定义DEMO java代码:

private void test(){
    int a = 1;
    int b = 7;
    int c = 254;
    int d = 2345;
    int d1 = 65538;
    long e = 12435465657677L;
    float f = 123235409234.09097945F
    double g = 111343333454999999999.912384376;
}

对应的smali代码:

.method private test()V
    .locals 10
    .prologue
    .line 49
    const/4 v0,0x1            #int a=1
    
    .line 50
    .local v0,"a":I
    const/4 v1,0x7            #int b=7
    
    .line51
    .local v1,"b":I
    const/16 v2,0xfe        #int c =254
    
    .line 52
    .local v2,"c":I
    const/16 v3,0x929        #int d=2345
    

    .line 53
    .local v3,"d":I
    const v4,0x10002        #int d1=65538

    .line 55
    .local v4,"d1":I
    const wide v6,0xb4f5b835d4dl        #llong e = 12435465657677L

    .line 56
    .local  v6,"e":J
    const v5,0x51e58b39                 #float f = 123235409234.09097945F

    .line 57
    .local v5,"f":F
    const-wide v8,0x441824cbef6b9491L    #1.11343333455E20

    .line 58
    .local v8,"g":D
    return-void
.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

转载于:https://my.oschina.net/u/2478321/blog/842676

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值