【发布时间】:2019-09-01 16:47:52
【问题描述】:
我正在上计算机组织的课程,我看到了这个剪辑:
为什么编译器编写者需要了解汇编语言?编译器不会将 Java 等高级语言翻译成二进制(或 Java 的字节码)吗?汇编语言什么时候出现?
我的书中有这样一句话:
高级编程语言 一种可移植语言,例如 C、C++、Java 或 Visual Basic,由单词和代数符号组成,编译器可以将其翻译成汇编语言。
我真的认为编译器会从高级语言变为二进制。这不对吗?
【问题讨论】:
-
编译器生成的“二进制”是二进制编码的汇编指令。
-
出于多种原因,编译成汇编语言比直接编译成机器代码更有意义。只有编译器生成的一些信息会产生实际的指令。汇编器先于目标的编译器,所以那里总是有一个汇编器。
-
工具链一词来源于工具链、编译器、汇编器、链接器
-
只有汇编语言的一部分是与指令相关的语法。有相当数量的不是指令,但在能够定义随后使用链接器链接的标签方面非常有价值,例如“main”或“printf”。为什么要重新发明轮子?有些人会直接编译成机器代码,就像有些人用汇编语言编写操作系统一样,因为他们可以。比如你为什么要爬山?因为它就在那里。
-
该列表缺少编译语言所需的引导程序。例如,对于引导 C,您的语言选择是什么?
标签: assembly compiler-construction