Dalvik汇编指令集(I)
来源:互联网 发布:一楼土木人淘宝店没了 编辑:程序博客网 时间:2024/05/18 20:10
指令格式
- 每16位的字采用空格分隔开
- 每个字母表示四位,每个字母按照顺序从高字节开始,排列到低字节,每四位之间可能使用竖线“|”来表示不同的内容
- 顺序采用A~Z的单个大写字母作为一个4位的操作码,op表示一个8位的操作码
- “
∅ ”来表示这字段所有位为0值
实例
A|G|op BBBB F|E|D|C
指令格式标识:
1:指令格式大多是时3个字符,前两个是数字,最后一个是字母
2:第一个数字表示有多少个16位的字组成
3:第二个数字是表示指令最多使用的寄存器的个数,特殊标记“r”标识使用一定范围内的寄存器
4:第三个字母为类型码,表示指令用到的额外数据类型取值见下表
指令格式标识类型码
寄存器表示方法
V命名法和p命名法
Dalvik字节码的类型、方法与字段表示方法
类型
方法
格式
Lpackage/name/ObjectName;->MethodName(III)Z
字段
Lpackage/name/ObjectName;->FieldName:Ljava/lang/String
Dalvik指令集
指令特点:
- 参数采用从目标(destination)到源(source)的方式
根据字节码的大小与类型的不同,一些字节码添加了后缀以消除歧义
- 32位常规类型的字节码未添加任何后缀
- 64位常规类型的字节码添加-wide后缀
- 特殊类型的字节码根据具体类型添加后缀(可以是:-boolean、-byte、-char、-short、-int、-long、-float、-double、-object、-string、-class、-void之一)
根据字节码的布局与选项不同,一些字节码添加了字节码后缀以消除歧义,这些后缀通过在字节码主名称后添加“/”来分隔
- 在指令集的描述中,宽度值中的每个字母表示宽度为4位
空操作指令
nop
作用通常被用来对齐代码,无实际操作。
数据操作指令
形式:move destination ,source
实例:move vA,vB;把vB寄存器的值赋值给vA寄存器
返回指令
基础字节码:return
数据定义指令
const/4 vA,#+B
锁命令
锁命令一共有两条:
monitor-enter vAA 为指定对象获得锁
monitor-exit vAA 释放指定对象的锁
阅读全文
0 0
- Dalvik汇编指令集(I)
- Dalvik指令集 (smali汇编)
- MCS-51 汇编指令集(I开头的指令)
- Dalvik指令集
- Dalvik指令集
- Android-Dalvik指令集
- Dalvik指令集
- Android-Dalvik指令集
- Android-Dalvik指令集
- Android-Dalvik指令集
- dalvik指令集总结
- Dalvik指令集
- Android Dalvik 指令集
- Dalvik指令集小练习
- 安卓逆向系列教程(一)Dalvik 指令集
- Dalvik指令
- 进入Android Dalvik虚拟机之Dalvik指令集
- ARM汇编指令集(1)
- Arch Linux Arm 安装Yaourt
- 2017—11—26
- Data Stream Median
- Mac下安装octave
- 数据结构(查找)
- Dalvik汇编指令集(I)
- 仿写添加标签栏
- 深入理解Java:注解(Annotation)--注解处理器
- 数组(arr[])
- Python 练习实例12
- 计算机科学导论学习笔记--第七章操作系统
- css 中div不用设定高度,自动根据内容出现滚动条
- 亿级工具类APP头条数据聚合优化实践
- lnmp安装