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

时间:2010-04-17 11:54:18

标签: android class format bytecode dalvik

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

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

1 个答案:

答案 0 :(得分:3)

我不是专家,但从我所看到的,答案是

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

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

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

它们都是专门为处理Java语言而量身定制的(尽管在未来版本的JVM中有解除此约束的建议)。

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