- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Dalvik操作码
Dalvik 虚拟机操作码
作者:Gabor Paller 翻译:YULIANGMAX
v1.0
表中的 vx、vy、vz 表示某个 Dalvik 寄存器。根据不同指令可以访问 16、256 或 64K 寄存器。
表中 lit4、lit8、lit16、lit32、lit64 表示字面值(直接赋值),数字是值所占用位的长度。
long 和 double 型的值占用两个寄存器,例:一个在 v0 寄存器的 double 值实际占用 v0,v1 两个寄存器。
boolean 值的存储实际是 1 和 0,1 为真、0 为假;boolean 型的值实际是转成 int 型的值进行操作。
所有例子的字节序都采用高位存储格式,例:0F00 0A00 的编译为 0F, 00, 0A, 00 存储。
有一些指令没有说明和例子,因为我没有在正常使用中看到过这些指令,它们的存在是从这里知道的:Android o
pcode constant list。
Opcod
e
Opcode name Explanation Example
操作
操作码名称 说明 示例
码(he
x)
00 nop 无操作 0000 ‐ nop
移动 vy 的内容到vx 。两个寄
0110 ‐ move v0, v1
01 move vx, vy 存器都必须在最初的 256 寄
移动 v1 寄存器中的内容到 v0 。
存器范围以内。
移动 vy 的内容到vx 。vy 可能
在 64K 寄存器范围以内,而 v 0200 1900 ‐ move/from16 v0, v25
02 move/from16 vx, vy
x 则是在最初的 256 寄存器范 移动 v25 寄存器中的内容到 v0 。
围以内。
03 move/16 注 4
未知
04 move‐wide 注 4
未知
移动一个 long/double 值,
从 vy 到 vx 。vy 可能在 64K
move ‐wide/from16 v 0516 0000 ‐ move‐wide/from16 v22, v0
05 寄存器范围以内,而 vx 则是
x, vy 移动 v0,v1 寄存器中的内容到 v22,v23 。
在最初的 256 寄存器范围以
内。
06 move‐wide/16 注 4
未知
0781 ‐ move‐obje
文档评论(0)