android - Dalvik 文件格式 (*.dx) 是否支持比 Java .class 文件更多的指令?

标签 android class format bytecode dalvik

Dalvik VM 是否支持(就字节码而言)当前未使用的任何内容,因为 .class 文件没有?

举个例子,如果人们为他们的函数式语言 XYZ 编写他们自己的 Source-to-DX 转换器,他们是否能够实现 e. G。尽管 .class 文件仅在某些情况下支持尾调用,但完整的尾调用?

最佳答案

我不是专家,但据我所知,答案是

以下两个站点列出了 Dalvik 和 JVM 的操作码,抛开 Dalvik 是基于寄存器的 VM 而 JVM 是基于堆栈的事实不谈,操作码非常相似。

http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html

http://en.wikipedia.org/wiki/Java_bytecode

它们都是专门为处理 Java 语言而定制的(尽管在 JVM 的 future 版本中有解除这种限制的建议)。

在 Java 上尾调用优化的一个问题是调用堆栈实际上对程序可用(例如通过 new Throwable().getStackTrace(),它也存在于安卓)。如果 VM 进行了尾部调用优化,则它需要对刚刚“优化掉”的内容进行一些簿记,以便能够正确实现 getStackTrace 方法。

关于android - Dalvik 文件格式 (*.dx) 是否支持比 Java .class 文件更多的指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2658253/

相关文章:

android - 适用于 iOS 和 Android 中的 native 移动应用程序的性能测试工具

android - 如何在android中创建虚拟sd卡

python - 类中的嵌套列表

c++ - 对于下面给出的任务,使用类还是多维数组更好?

format - TCL:将负整数转换为十六进制?

android - ViewPager 第一次工作正常,但再次重新加载时出现错误 java.lang.IllegalStateException?

android - 在运行时请求和允许 WRITE_EXTERNAL_STORAGE 权限对当前 session 没有影响

javascript 'this' 用法

swift : use of %s in String(format: . ..)

FileInputFormat,其中文件名是 KEY,文本内容是 VALUE