【发布时间】:2026-02-04 04:00:01
【问题描述】:
在学习了编译器课程并自己做了一个基本的课程后,我仍然对第一个编译器有这个挥之不去的怀疑。
从高到低,我看到运行在 C 或 C++ 中的代码被它的编译器(比如说 gcc)转换为相应的汇编语言等效项。此代码依赖于平台(假设我使用的是 intel x86 架构)。
现在问题来了,硬件如何运行程序集?
我记得在我的计算机组织类中,每个汇编语句都被转换为特定格式(取决于处理器),例如,像 mov ax,bx 这样的语句被转换为它的操作码,比如说 0110 101010 101000。假设汇编器解析我的汇编语言程序中的每一条语句,并将其转换为机器码,那么第一个汇编器是如何编写的?
【问题讨论】:
-
技术,尤其是计算机,本质上是迭代的;我们一遍又一遍地使用工具来制造更好的工具。第一个“组装机”是打卡机;操作员采用手写或键入的指令并使用打孔器将命令/寄存器/等转换为其二进制操作码,并将这些命令以可重复的、机器可读的形式保存。在此之前,可编程计算机必须通过使用配电盘“硬编码”电气路径来进行编程。
-
手工编写机器代码本身并不是一个真正的问题。只是乏味。所以任务是自动化的——通过用机器代码编写汇编程序。
-
主要问题是什么?第一个汇编程序是如何编写的?程序员:programmers.stackexchange.com/questions/129123/… 编译器引导:*.com/questions/1653649/…
标签: assembly