网站首页 > 博客文章 正文
表中的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内存模型是什么,可以吊打面试官
你 发表评论:
欢迎- 07-08Google Cloud Platform 加入支持 Docker 的容器引擎
- 07-08日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 07-08美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- 07-08GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 07-08谷歌推出Cloud Dataproc,缩短集群启动时间
- 07-08Infovista与Google Cloud携手推进射频网络规划革新
- 07-08比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- 07-08BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- 最近发表
-
- Google Cloud Platform 加入支持 Docker 的容器引擎
- 日本KDDI与Google Cloud 签署合作备忘录,共探AI未来
- 美国Infoblox与Google Cloud合作推出云原生网络和安全解决方案
- GoogleCloud为Spanner数据库引入HDD层,将冷存储成本降低80%
- 谷歌推出Cloud Dataproc,缩短集群启动时间
- Infovista与Google Cloud携手推进射频网络规划革新
- 比利时Odoo与Google Cloud建立增强合作,扩大全球影响力
- BT 和 Google Cloud 通过 Global Fabric 加速 AI 网络
- NCSA和Google Cloud合作开发AI驱动的网络防御系统,加强泰国网络空间的安全性
- SAP将在沙特阿拉伯 Google Cloud 上推出BTP服务
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (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)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)