zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    php 计算时间添加
    微信网页授权
    微信抢红包微信 PHP代码实现
    微信中禁止长按复制的代码
    【转】java内存分配和String类型的深度解析
    【转】java中创建对象的方法
    【转】深入理解Java的接口和抽象类
    【转】Java 字节流与字符流的区别
    【转】Java并发编程:Thread类的使用
    【转】深入理解java异常处理机制
  • 原文地址:https://www.cnblogs.com/codeAnimal/p/4104064.html
Copyright © 2011-2022 走看看