第3章 Android Dalvik虚拟机 第三节(上)
2016-02-26 14:16
369 查看
第3章 Android Dalvik指令
1、 环境配置 Ubuntu15.10 IP:192.168.153.130
2、 Dalvik指令使用
1、 Dalvik指令特点
例子: move-wide/from 16vAA vBBBB
Move 是基础字节码(baseopcode)
Wide 是64位数据宽度
From 16 是字节码后缀,是16位寄存器引用变量
vAA是目的寄存器,取值范围是v0~v255
vBBBB 是源寄存器,取值范围是v0~v65535
寄存器数值的取值范围为4、8、16等方式。
4位数值如A/B/C 取值为v0~v15
8位数值如AA/BB/CC 取值为v0~v255
16位数值如AAAA/BBBB/CCCC取值为v0~v65535
2、 空指令操作
Nop指令只是用于对齐操作,没有实际意义。
3、 数据操作指令
Move vA,vB 是将vB寄存器的值赋予给vA寄存器。
Move vAA,vBBBB 是将vBBBB源寄存器的值赋予给vAA目的寄存器。
Move/16 vAAAA, vBBBB是将vBBBB寄存器的值赋予给vAAAA寄存器,且源寄存器和目标寄存器都是16位。
Move-wide vA,vB 为4位寄存器的赋值。源寄存器与目的寄存器的值都为4位。
Move-object vA,vB 为对象赋值,源寄存器和目的寄存器都为4位。
Move-object/from16 vAA ,vBBBB 与move-wide/from 16 vAA vBBBB 相同。
Move-object/16vAAAA, vBBBB 为对象赋值,源寄存器和目的寄存器都为16位。
Move-result vAA 将invoke类型指令操作的单字非对象结果赋给vAA寄存器。
Move-result-wide vAA将invoke类型指令操作的双字非对象结果赋给vAA寄存器。
Move-result-object vAA 将上一个invoke类型指令操作的对象结果赋给vAA寄存器。
Move-exception vAA 保存一个发生异常的寄存器,是一条异常处理器的一条指令。
4、 返回指令
Return-void 表示返回viod方法
Return vAA 表示返回一个32位非对象类型的值,返回值为8位的寄存器。
Return-wide vAA 表示函数返回一个64位非对象类型的值,返回值为8位的寄存器。
Return-object vAA 表示函数返回一个对象的值,返回值为8位的寄存器。
5、 数据定义指令
Const/4 vA ,#+B 将数值符号扩展为32位后赋给寄存器vA .
Const/16 vA A,#+BBBB 将数值符号扩展为32位后赋给寄存器vAA .
Const vAA ,#+BBBBBBBBBB将数值赋给寄存器vAA .
Const/high16 vAA ,#+BBBB0000 将数值右边零扩展为32位后赋给寄存器vAA .
Const/high32 vAA ,#+BBBBBBBB 将数值右边零扩展为64位后赋给寄存器vAA .
Const-wide vAA ,#+BBBBBBBBBBBBBBBB 将数值赋给寄存器对v AA.
Const-wide/high16 vAA ,#+BBBB000000000000 将数值右边零扩展为64位后赋给寄存器对vAA .
Const-string vAA ,string@BBBB 通过字符串索引构造一个字符串并赋给寄存器vAA .
Const-sting/jumbo vAA ,string@BBBBBBBB 构建一个较大的字符串赋给寄存器vAA .
Const-class vAA ,type@BBBB 通过类型索引获取一个类引用并赋给寄存器vAA.
Const-class/jumbo vAAAA ,type@BBBBBBBB通过类型索引获取一个类引用并赋给寄存器vAAAA .
6、 锁指令
Monitor-enter vAA 为指定的对象获取锁
Monitor-exitvAA 释放指定的对象的锁
1、 环境配置 Ubuntu15.10 IP:192.168.153.130
2、 Dalvik指令使用
1、 Dalvik指令特点
例子: move-wide/from 16vAA vBBBB
Move 是基础字节码(baseopcode)
Wide 是64位数据宽度
From 16 是字节码后缀,是16位寄存器引用变量
vAA是目的寄存器,取值范围是v0~v255
vBBBB 是源寄存器,取值范围是v0~v65535
寄存器数值的取值范围为4、8、16等方式。
4位数值如A/B/C 取值为v0~v15
8位数值如AA/BB/CC 取值为v0~v255
16位数值如AAAA/BBBB/CCCC取值为v0~v65535
2、 空指令操作
Nop指令只是用于对齐操作,没有实际意义。
3、 数据操作指令
Move vA,vB 是将vB寄存器的值赋予给vA寄存器。
Move vAA,vBBBB 是将vBBBB源寄存器的值赋予给vAA目的寄存器。
Move/16 vAAAA, vBBBB是将vBBBB寄存器的值赋予给vAAAA寄存器,且源寄存器和目标寄存器都是16位。
Move-wide vA,vB 为4位寄存器的赋值。源寄存器与目的寄存器的值都为4位。
Move-object vA,vB 为对象赋值,源寄存器和目的寄存器都为4位。
Move-object/from16 vAA ,vBBBB 与move-wide/from 16 vAA vBBBB 相同。
Move-object/16vAAAA, vBBBB 为对象赋值,源寄存器和目的寄存器都为16位。
Move-result vAA 将invoke类型指令操作的单字非对象结果赋给vAA寄存器。
Move-result-wide vAA将invoke类型指令操作的双字非对象结果赋给vAA寄存器。
Move-result-object vAA 将上一个invoke类型指令操作的对象结果赋给vAA寄存器。
Move-exception vAA 保存一个发生异常的寄存器,是一条异常处理器的一条指令。
4、 返回指令
Return-void 表示返回viod方法
Return vAA 表示返回一个32位非对象类型的值,返回值为8位的寄存器。
Return-wide vAA 表示函数返回一个64位非对象类型的值,返回值为8位的寄存器。
Return-object vAA 表示函数返回一个对象的值,返回值为8位的寄存器。
5、 数据定义指令
Const/4 vA ,#+B 将数值符号扩展为32位后赋给寄存器vA .
Const/16 vA A,#+BBBB 将数值符号扩展为32位后赋给寄存器vAA .
Const vAA ,#+BBBBBBBBBB将数值赋给寄存器vAA .
Const/high16 vAA ,#+BBBB0000 将数值右边零扩展为32位后赋给寄存器vAA .
Const/high32 vAA ,#+BBBBBBBB 将数值右边零扩展为64位后赋给寄存器vAA .
Const-wide vAA ,#+BBBBBBBBBBBBBBBB 将数值赋给寄存器对v AA.
Const-wide/high16 vAA ,#+BBBB000000000000 将数值右边零扩展为64位后赋给寄存器对vAA .
Const-string vAA ,string@BBBB 通过字符串索引构造一个字符串并赋给寄存器vAA .
Const-sting/jumbo vAA ,string@BBBBBBBB 构建一个较大的字符串赋给寄存器vAA .
Const-class vAA ,type@BBBB 通过类型索引获取一个类引用并赋给寄存器vAA.
Const-class/jumbo vAAAA ,type@BBBBBBBB通过类型索引获取一个类引用并赋给寄存器vAAAA .
6、 锁指令
Monitor-enter vAA 为指定的对象获取锁
Monitor-exitvAA 释放指定的对象的锁
相关文章推荐
- Android 通知栏提示
- Android状态保存与恢复
- Android Studio——FrameLayout
- Android 自己定义 TextView drawableTop 图标与文字左对齐(效果图)
- Android 自己定义 TextView drawableTop 图标与文字左对齐(效果图)
- Android SwipeRefreshLayout下拉刷新与上拉加载+滑动删除
- Android studio 中 butterknife zelezny 的使用
- Android:实现仿 美团/淘宝 多级分类菜单效果
- Android support library 23.2新特性介绍
- android事件传递机制测试分析
- Android按钮的各个样式设置
- 极光推送,极光IM使用指南(AndroidStudio)
- Android之USB转串口通信
- Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)
- Android Studio中获取SHA1或MD5的方法
- android ScheduleExecutorService定时周期执行指定任务
- Android开发深化之关于自定义GridView控件的实现
- Android 开源项目分类汇总
- android 一行代码,快速实现图片验证码(附android studio 版小demo)
- android6.0 Phone源码分析之Phone适配过程