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 指令学习相关推荐

  1. linux 指令学习总结~~~

    linux 指令学习总结~~~ 目录操作: mkdir $HOME/testFolder(创建一个目录) cd ./testFolder(cd $HOME/testFolder)(切换目录) cd . ...

  2. Modbus通信协议指令学习记录

    Modbus通信协议指令学习记录 Modbus协议版本 读取指令格式 Modbus RTU Modbus ASCII Modbus TCP 写入指令格式 Modbus RTU Modbus ASCII ...

  3. dalvik指令集和smali文件

    dalvik指令集和smali文件 参开地址:https://blog.csdn.net/dd864140130/article/details/52076515 https://blog.csdn. ...

  4. linux系统指令学习(创建目录,在目录下创建一个*.txt,*.txt输入内容,把*.txt文件拷贝到*目录下,把*文件夹目录移动到*目录下)

    linux系统指令学习1 透过12道题熟练掌握20个指令 Linux有150个常用指令,透过12道题去学习以及练习指令 1.创建一个目录/dzqc 提示: windows下的路径样式为c: \dzqc ...

  5. DL/T645-2007通信协议指令学习记录

    DL/T645-2007通信协议指令学习记录 DL/T645协议版本 DL/T645通信链路 DL/T645-2007数据格式 地址域 控制码C 数据长度L 数据域 DATA 校验码 CS 数据标识 ...

  6. 超详细的Dalvik指令

    Dalvik虚拟机比Java虚拟机执行速度快 通过实例来对比Java字节码和Dalvik字节码的不同 源码如下: public class Hello {public static void main ...

  7. 最右android工资,Android逆向之旅—最右App的签名算法解析(ARM指令学习不舍篇)

    一.逆向分析 本文继续来看最后一篇介绍ARM指令学习,之前的两篇文章已经详细介绍了ARM指令的基础知识,本文继续把剩下来的所有都介绍完了,首先一定要去看前面的基础篇和进阶篇,不然我都很难保证你看这篇文 ...

  8. RISC-V 指令学习笔记(基于CH32V103)

    文章目录 RISC-V 指令学习笔记(基于CH32V103) 一.指令结构分类 二.寄存器功能 三.加载存储指令 四.算数运算指令 五.移位指令 六.逻辑操作指令 七.跳转指令 7.1 条件跳转 7. ...

  9. 西门子for循环例子_西门子S7-200 SMART PLC功能指令学习及实例分析

    原标题:西门子S7-200 SMART PLC功能指令学习及实例分析 一.定时器 1.S7-200 SMART CPU提供了接通延时定时器.(TON).保持型接通延时定时器(TONR).断开延时定时器 ...

最新文章

  1. Android 属性动画(Property Animation) ValueAnimator 的介绍
  2. Python之面向对象进阶系列
  3. Linux 设置端口转发
  4. php小程序登录code无效,微信小程序出现“invalid code”怎么办
  5. CF1267G-Game Relics【数学期望,dp】
  6. 我们甚至没有进行包容性的讨论
  7. tensorflow实战讨论
  8. 【BZOJ 2595】2595: [Wc2008]游览计划 (状压DP+spfa,斯坦纳树?)
  9. Kotlin 势必取代 Java?
  10. Android内部类监听和多对象监听方法
  11. unittest框架(惨不忍睹低配版)
  12. java web分享ppt大纲 -- servlet包
  13. Linux内核编程(1)
  14. 外部碎片和内部碎片的区别
  15. 多媒体教室建设方案综述
  16. 【寒江雪】Go实现组合模式
  17. 在一起计时器_浅谈§1.4 实验:用打点计时器测速度
  18. PyTorch学习—7.数据预处理模块—transforms
  19. 整体费率三连降,海尔追“格”超“美”的下一步在哪?
  20. 如果微软狠心鸿蒙系统,微软强制用户升级华为鸿蒙系统出来你会放弃windows使用鸿蒙吗...

热门文章

  1. 关于计算机编程的收获的作文,编程的乐趣作文800字
  2. 【好网】通信专业的大四研一研二看看:以求职经验教你选择导师专业和科研方向...
  3. 随手记,python3.7 做的简单爬虫,爬取百度p2p论坛的数据到自己服务器的Oracle数据库
  4. ifstat网络流量监控之/proc/net/dev文件
  5. py用barh绘制水平条形图
  6. 南信与南邮谁的计算机专业更强,南信力压南邮!关于一流本科专业!
  7. 工作流 workflow 理论知识
  8. k8s-重启kubelet服务异常 kubelet.service: main process exited, code=exited, status=1/FAILURE
  9. pyecharts 世界地图国家中英文对照表
  10. Richard Stallman简介