Dalvik位元码

来自个人维基
2015年5月22日 (五) 12:19Hovercool讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

此页内容翻译自:https://source.android.com/devices/tech/dalvik/

概述

  • 模拟器和调用规范,分别是仿照真实的机器架构和 C语言风格设计的:
* 模拟器是基于寄存器的,所有的帧在创建时大小都是固定的。每一帧由相当数量的寄存器组成,这些寄存器和函数执行所需要的参数一样,例如程序计数器、指向对应 .dex文件的引用。
* 对于位数(例如整型和浮点型),寄存器为 32位宽度,对于 64位的值,由两个相邻的 32位配对存储,且没有对齐要求。
* 寄存器被设计成足够的宽度,以便能完整地存储对像的引用
* In terms of bitwise representation, (Object) null == (int) 0.
* 函数中所带的参数,按顺序依次保存在寄存器中,较大的数据使用两个寄存器,实例方法使用 this引用作为其第一个参数。
  • 指令流中的存储单元由 16位无符号构成,一些指令中的某些位可能会被忽略或必须要求是0。
  • 指令并不会限制于某一种特定的类型。例如,单纯的一个移动 32位数据的指令,不必指明是在移动 整型 或者 浮点型。
  • 提供专用的常量池,用来保存 字串、类型、fields和函数的引用。
  • Bitwise literal data is represented in-line in the instruction stream.