网站首页 > 博客文章 正文
表中的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。
Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。
Dalvik虚拟机使用的指令是基于寄存器的,而Java虚拟机使用的指令集是基于堆栈的。基于堆栈的指令很紧凑,例如,Java虚拟机使用的指令只占一个字节,因而称为字节码。基于寄存器的指令由于需要指定源地址和目标地址,因此需要占用更多的指令空间,例如,Dalvik虚拟机的某些指令需要占用两个字节。基于堆栈和基于寄存器的指令集各有优劣,一般而言,执行同样的功能,前者需要更多的指令(主要是load和store指令),而后者需要更多的指令空间。需要更多指令意味着要多占用CPU时间,而需要更多指令空间意味着数据缓冲(d-cache)更易失效。
事实上,基于寄存器和基于堆栈的指令集之争,就如精简指令集(RISC)和复杂指令集(CISC)之争,谁优谁劣,至今是没有定论的。
关于Dalvik虚拟机的特性,我们就简要介绍到这里。事实上,Dalvik虚拟机和Java虚拟机的实现是类似的,例如,Dalvik虚拟机也支持JDWP(Java Debug Wire Protocol)协议,这样我们就可以使用DDMS来调试运行在Dalvik虚拟机中的进程。对Dalvik虚拟机的其它特性或者实现原理有兴趣的,建议都可以参考Java虚拟机的实现,这里提供三本参考书:
1. Java Virtual Machine Specification (Java SE 7)
2. Inside the Java Virtual Machine, Second Edition
3. Oracle JRockit: The Definitive Guide
另外需要详细pdf教程的朋友私信我哦。
猜你喜欢
- 2024-10-26 香啊!阿里P8架构师编译:深入理解JVM进阶指南pdf,GitHub星标99K
- 2024-10-26 阿里技术专家带你玩转JVM,从底层源码到项目实战,都在这份文档里
- 2024-10-26 内部爆款java面试全笔记,真的太详细了!涵盖面试所有知识点~
- 2024-10-26 最美分享 | 架构师进阶笔记:Java问题定位技术Pdf
- 2024-10-26 腾讯T4大神精心整理:深入理解JVM高级特性与最佳实践pdf
- 2024-10-26 Android中高级面试原理:热修复与插件化基础Java与Android虚拟机
- 2024-10-26 Java完全自学手册,从外包到大厂,再到年薪100万技术大佬都靠它
- 2024-10-26 这篇 Java IO,讲的实在是太好了(《java》)
- 2024-10-26 阿里内部:2020年全技术栈文档+PPT分享,(万粉总结,回馈粉丝)
- 2024-10-26 一文告诉你java内存模型是什么,可以吊打面试官
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)