compiler-construction - 编译器如何编译编译器?

标签 compiler-construction low-level machine-code

来自高级编程背景,我对学习低级编程感兴趣。我想知道编译器是如何编译的?

在查看了Wiki中的一些文章之后,Numerical machine code被认为是最底层的语言,但是必须有一个编译器来编译该机器代码。该编译器用什么语言编写?

最佳答案

通常,编译器作者采用以下两种方法之一:


用其他现有语言编写整个编译器。通常这是最简单的选择。
用某种其他语言编写足够的代码,以具有最少可用的翻译器,并以该“脚手架”为基础,以打算使用的编译语言编写适当的编译器。这比较复杂,通常需要更长的时间,但是从本质上讲,通过在实际项目中测试语言,可以消除语言的错误和弱点。


第一个翻译代码的程序至少部分是用机器代码编写的-实际数字告诉CPU该做什么。这是最低级别,因为实际上没有机器代码的“编译器” *;它只是按一定方式排列的数字,CPU内部有电路可以在没有外部帮助的情况下处理它们。

*有一些程序可以帮助设计用于解释和执行指令的硬件,但是可以说它超出了编译器的定义范围。与编译器输出的直接可执行文件相反,此类程序生成硬件描述(电路图等)。

关于compiler-construction - 编译器如何编译编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602546/

相关文章:

.net - F# 编译器是单程编译器吗?

compiler-construction - LLVM 对 AVR 的支持如何适用于不同的语言?

C++ : In how many ways compiler optimizes away our code?

c++ - 在 C++ 中使用模板时,编译器如何知道要实例化多少数据类型?

assembly - MIPS 标签存储位置

compiler-construction - 单一静态赋值形式的全局变量

optimization - 为什么编译器不生成微指令而不是汇编代码?

compiler-construction - 从硬件编写低级语言

assembly - 如何将 Intel 80386 机器代码转换为汇编语言?

assembly - I386指令集中GRPL指令的作用是什么?