首页 > 代码库 > Smail语法(2)指令解析
Smail语法(2)指令解析
【重点】归总了一些简单的Smail指令。
1.If语句 if-nez v0,:cond_0 如果结果不为0,就跳转到cond_0标号处 if-eqz v0,:cond_1 如果结果为0,就跳转到cond_1标号处 2.数据操作指令 move v0,v1 将v1的值赋给v0 ,两个寄存器都为4位 move-result v0 将上一个invoke类型指令操作的单字非对象结果赋给v0 move-result-object v0 将上一个invoke类型指令操作的对象结果(返回值)赋给v0 3.返回指令 return-void return v0 return-object v0 4.实例操作指令 check-cast v1, Landroid/widget/TextView; 将v1寄存器中的对象引用转化成指定的类型(这里是 TextView) new-instance v1, Ljava/lang/StringBuilder; 构造一个指定类型对象的新实例 5.数组操作指令 new-array v0,v0,[I 构造Int类型,大小是v0的数组,并将值赋给v0寄存器 array-length v1,v0 获取v0数组的长度且将值赋给v1 6.异常指令 throw vAA 抛出vAA寄存器中指定类型的异常 7.跳转指令 1,goto :goto_0 偏移量goto_0不能为0 2,If语句 3,switch packed-switch v0, :pswitch_data_0 v0是switch需要判断的值 :pswitch_data_0 偏移表,表中值是有规律递增的。 sparse-switch v0, :pswitch_data_0 偏移表中值是无规律的。8,比较指令 cmpl-float v0,v2,v3 比较v2和v3,如果v2>v3,v0=-1;反之,v0=1;相等,v0=0 cmpg-float v0,v2,v3 比较v2和v3,如果v2>v3,v0=1;反之,v0=-1;相等,v0=0 cmpl-double v0,v2,v3 同理 cmpg-double v0,v2,v3 同理 cmp-long v0,v2,v3 比较v2和v3,如果v2>v3,v0=1;反之,v0=-1;相等,v0=0
Smail语法(2)指令解析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。