1

字节码编译器是否首先将源代码转换为 VM 汇编语言,然后再转换为 VM 字节码?

例如

[Source Code] --> { [VM Bytecode Compiler (lex, parse into AST)] --> [AST to VM assembly] } --> [VM Assembler] --> [VM Bytecode]

4

1 回答 1

0

您似乎对什么是汇编语言有错误的印象。汇编语言主要是特定机器代码的人类可读表示。对于编译器而言,创建要生成的代码的人类可读中间表示没有任何优势。

对于 Java,根本没有标准的汇编表示,尽管有一些处理伪 Java 汇编语言的工具看起来彼此接近,因为它们都使用 JVM 规范中相同的众所周知的名称。因此,例如,您可以使用 JDK 附带.class的命令将所有文件转换为伪汇编源代码。javap但这并没有给工具增加任何优势,javac对其他编程语言编译器也没有。

大多数编译器在编译时都有某种中间表示,但这不是汇编语言表示。

于 2013-10-15T12:33:43.990 回答