编译程序自身如何转化为机器代码?

1个回答
展开全部
摘要 您好,编译程序自身转化为机器代码,通常需要采用"自举"(Bootstrapping)的方式。自举的基本思路是:1. 在一台可以编译的主机上,用一种已有的编译器编译生成新的编译器的二进制代码。2. 在目标机器上运行这份新生成的编译器二进制码,就可以在目标机器上重新编译生成这份编译器的机器代码。3. 重复上述步骤,就可以逐步用新编译的编译器编译旧的编译器,最终在目标机器上生成该编译器的机器代码。主要步骤:1. 用已有编译器编译新编译器生成二进制码2. 交叉编译,在目标机器上运行二进制码3. 用新编译器编译旧编译器生成目标机器码4. 替换旧编译器,再编译新编译器5. 重复上述步骤,直到编译器自举通过这种逐步替换的自举过程,编译器最终可以在目标机器上编译自己生成机器代码,实现自身的转化。
咨询记录 · 回答于2023-07-24
编译程序自身如何转化为机器代码?
您好,编译程序自身转化为机器代码,通常需要采用"自举"(Bootstrapping)的方式。自举的基本思路是:1. 在一台可以编译的主机上,用一种已有的编译器编译生成新的编译器的二进制代码。2. 在目标机器上运行这份新生成的编译器二进制码,就可以在目标机器上重新编译生成这份编译器的机器代码。3. 重复上述步骤,就可以逐步用新编译的编译器编译旧的编译器,最终在目标机器上生成该编译器的机器代码。主要步骤:1. 用已有编译器编译新编译器生成二进制码2. 交叉编译,在目标机器上运行二进制码3. 用新编译器编译旧编译器生成目标机器码4. 替换旧编译器,再编译新编译器5. 重复上述步骤,直到编译器自举通过这种逐步替换的自举过程,编译器最终可以在目标机器上编译自己生成机器代码,实现自身的转化。
能详细点吗?谢谢
我来尝试更详细地解释编译程序自身如何通过自举过程转化为机器代码:1. 准备阶段:- 在主机上需要有一个可以工作的编译器,通常是低级版本的编译器,用于编译生成新编译器的二进制代码。- 编写新版本编译器的源代码,改进和优化编译器,加入新功能。2. 第一步:- 在主机上,用已有的编译器编译新版本编译器的源代码,生成编译器的二进制可执行文件。3. 第二步:- 将编译器的二进制文件拷贝到目标机器上,直接在目标机器运行该二进制文件。- 这会在目标机器上生成一个低级别的新编译器。4. 第三步:- 用目标机器上的新编译器,去编译主机上原有的旧编译器源代码,生成面向目标机器的新旧编译器。5. 第四步:- 用新生成的编译器二进制文件替换掉目标机器上旧的编译器。- 重复第三步,用新编译器编译旧编译器。6. 依次迭代执行上述步骤,最终编译器将逐步在目标机器上自举,生成面向目标机器的机器代码,完成自身编译。在整个过程中,编译器逐步通过自我编译实现从主机到目标机器的移植,逐步优化,最终实现自举,适配目标机器。
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消