Dalvik 指令学习
Dalvik 指令可在在 android2.32\dalvik\docs\opcodes 中看到很详细的介绍
网上也有很多参考资料,比如 http://blog.csdn.net/hlchou/article/details/6303566
也可以在源码中 \android2.32\dalvik\libdex\OpCode.h 能找到很详细的定义
通过对源码的分析及相关资料搜索,再进行了一些试验,现有一些总结,以做备忘
指令,在代码中常称作 opcode,即:操作码
指令的宽度是 16Bites
在 Dalvik 中每一个指令的作用会由指令和相关数据组合而成。组合的方式有很多种,可参见源码文档: android2.32\dalvik\docs\dalvik-bytecode.html
现把常用的一些指令进行示例说明:
指令 + 寄存器
0e 00 => return-void
Java 中的 return,固定不变数据 0
0f 01 => return v1
Java 中的 return 基本数据类型,数据存储在寄存器中 v1 中, 后面的数据是寄存器标识, 0f 04 就是 return v4
11 01 => return-object v1
Java 中的 return 类对像,类对像存储在 v1 中,数字如上
还有好多格式,可以参见文档。
下面说一下函数调用时寄存器状况
public int AFunc(int a, int b) {
int c = 10;
return a + b;
}
把该类反编译成 smali ,该方法会导致使用了5个寄存器
v0 为 c
v1 为 a+b 的临时使用寄存器
v2 为 类对像自己
v3 为 参数 b
v4 为 参数 a
反回值用的是 return 寄存器 指令
看来 Dalvik 指令操作还是很复杂,需要进一步探索,以后有收获再补充!
Dalvik 指令学习相关推荐
- linux 指令学习总结~~~
linux 指令学习总结~~~ 目录操作: mkdir $HOME/testFolder(创建一个目录) cd ./testFolder(cd $HOME/testFolder)(切换目录) cd . ...
- Modbus通信协议指令学习记录
Modbus通信协议指令学习记录 Modbus协议版本 读取指令格式 Modbus RTU Modbus ASCII Modbus TCP 写入指令格式 Modbus RTU Modbus ASCII ...
- dalvik指令集和smali文件
dalvik指令集和smali文件 参开地址:https://blog.csdn.net/dd864140130/article/details/52076515 https://blog.csdn. ...
- linux系统指令学习(创建目录,在目录下创建一个*.txt,*.txt输入内容,把*.txt文件拷贝到*目录下,把*文件夹目录移动到*目录下)
linux系统指令学习1 透过12道题熟练掌握20个指令 Linux有150个常用指令,透过12道题去学习以及练习指令 1.创建一个目录/dzqc 提示: windows下的路径样式为c: \dzqc ...
- DL/T645-2007通信协议指令学习记录
DL/T645-2007通信协议指令学习记录 DL/T645协议版本 DL/T645通信链路 DL/T645-2007数据格式 地址域 控制码C 数据长度L 数据域 DATA 校验码 CS 数据标识 ...
- 超详细的Dalvik指令
Dalvik虚拟机比Java虚拟机执行速度快 通过实例来对比Java字节码和Dalvik字节码的不同 源码如下: public class Hello {public static void main ...
- 最右android工资,Android逆向之旅—最右App的签名算法解析(ARM指令学习不舍篇)
一.逆向分析 本文继续来看最后一篇介绍ARM指令学习,之前的两篇文章已经详细介绍了ARM指令的基础知识,本文继续把剩下来的所有都介绍完了,首先一定要去看前面的基础篇和进阶篇,不然我都很难保证你看这篇文 ...
- RISC-V 指令学习笔记(基于CH32V103)
文章目录 RISC-V 指令学习笔记(基于CH32V103) 一.指令结构分类 二.寄存器功能 三.加载存储指令 四.算数运算指令 五.移位指令 六.逻辑操作指令 七.跳转指令 7.1 条件跳转 7. ...
- 西门子for循环例子_西门子S7-200 SMART PLC功能指令学习及实例分析
原标题:西门子S7-200 SMART PLC功能指令学习及实例分析 一.定时器 1.S7-200 SMART CPU提供了接通延时定时器.(TON).保持型接通延时定时器(TONR).断开延时定时器 ...
最新文章
- Android 属性动画(Property Animation) ValueAnimator 的介绍
- Python之面向对象进阶系列
- Linux 设置端口转发
- php小程序登录code无效,微信小程序出现“invalid code”怎么办
- CF1267G-Game Relics【数学期望,dp】
- 我们甚至没有进行包容性的讨论
- tensorflow实战讨论
- 【BZOJ 2595】2595: [Wc2008]游览计划 (状压DP+spfa,斯坦纳树?)
- Kotlin 势必取代 Java?
- Android内部类监听和多对象监听方法
- unittest框架(惨不忍睹低配版)
- java web分享ppt大纲 -- servlet包
- Linux内核编程(1)
- 外部碎片和内部碎片的区别
- 多媒体教室建设方案综述
- 【寒江雪】Go实现组合模式
- 在一起计时器_浅谈§1.4 实验:用打点计时器测速度
- PyTorch学习—7.数据预处理模块—transforms
- 整体费率三连降,海尔追“格”超“美”的下一步在哪?
- 如果微软狠心鸿蒙系统,微软强制用户升级华为鸿蒙系统出来你会放弃windows使用鸿蒙吗...
热门文章
- 关于计算机编程的收获的作文,编程的乐趣作文800字
- 【好网】通信专业的大四研一研二看看:以求职经验教你选择导师专业和科研方向...
- 随手记,python3.7 做的简单爬虫,爬取百度p2p论坛的数据到自己服务器的Oracle数据库
- ifstat网络流量监控之/proc/net/dev文件
- py用barh绘制水平条形图
- 南信与南邮谁的计算机专业更强,南信力压南邮!关于一流本科专业!
- 工作流 workflow 理论知识
- k8s-重启kubelet服务异常 kubelet.service: main process exited, code=exited, status=1/FAILURE
- pyecharts 世界地图国家中英文对照表
- Richard Stallman简介