1

我正在上计算机组织的课程,我看到了这个剪辑:

在此处输入图像描述

为什么编译器编写者需要了解汇编语言?编译器不会将 Java 等高级语言翻译成二进制(或 Java 的字节码)吗?汇编语言什么时候出现?

我的书中有这样一段话:

高级编程语言 一种可移植的语言,例如 C、C++、Java 或 Visual Basic,由可以由编译器翻译成汇编语言的单词和代数符号组成。

我真的认为编译器从高级语言变为二进制。这不对吗?

4

1 回答 1

4

编译器完全有可能以文本形式发出程序集,然后将其输入汇编器,而不是直接发出二进制机器代码(例如 GCC 这样做),但我认为该幻灯片的作者甚至没有制作那个区别。汇编语言和机器语言基本上是同一语言的不同表示,所以区别并没有那么有意义。

事实上,我很难相信任何知道给定机器的机器代码的人也不会知道它的汇编语言 - 几乎可以肯定你会通过首先学习汇编形式然后查找二进制值来学习机器代码机器的数据表。

或者在 Java 的情况下是字节码

要编写字节码编译器,您不需要了解汇编或机器语言。确实如此。(不过,您需要知道它才能实现 JVM 的 JIT 编译器)。

于 2019-09-01T16:59:05.087 回答