libsmali-java_Smali 语法学习

可以根据Dalvik opcodes来学习这些 smali 指令

new-array

const/4 v6, 0x2 # 数组元素个数

new-array v7, v6, [Ljava/lang/Class; # v7持有数组的引用

aput-object vx,vy,vz

vx: 表示类型

vy: 引用

vz: 角标

const/4 v6, 0x2

new-array v6, v6, [Ljava/lang/Class;

const/4 v7, 0x0 # 索引 0位子

const-class v8, Ljava/lang/Long; # 元素类型

aput-object v8, v6, v7

const/4 v7, 0x1 # 索引 1 位子

const-class v8, Ljava/lang/Integer; #元素类型

aput-object v8, v6, v7

new-instance

new-instance v0, Ljava/lang/String; # 创建String 对象

invoke-direct

invoke-direct {p0}, Ljava/lang/Object;->()V # 表示直接调用无参构造方法

invoke-virtual

invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V # 执行虚拟方法

invoke-static

invoke-static {}, Lcom/example/lib/smali/HelloWorld;->sayHello()V # 执行静态方法

.line

.line 14 # 在java源文件中对应的行号

return-void

return-void # 方法返回 void

.locals

.locals 0 # 指定局部变量的个数

.local v0, “str”:Ljava/lang/String; #局部变量 str 类型为String

sget-object

sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; # 普通对象赋值

const-string

const-string v0, “haha” # 将字符串”haha” 赋值给 v0

return-object

return-object v0 # 将v0 作为返回值返回

.end method

.end method #方法结束符

const/4

const/4 v1, 0x1 # 将占有4字节的变量赋值给变量v1,这里是将 v1 等于1

check-cast

check-cast v2, Lcom/example/duia/myapplication/ShadeView; # 类型转换检查

iput-object

# 为v2赋值等于root_ll,当前的Activity 持有v2的引用

iput-object v2, p0, Lcom/example/duia/myapplication/MainActivity;

->root_ll:Lcom/example/duia/myapplication/ShadeView;

add-int/lit8

add-int/lit8 v7, v7, 0x7 # v7 = v7 + 7

:try_start_0

try 语句的开始部分

:try_end_0

try 语句的结束部分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值