打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言编译器自举开发过程

分类: C/C++

先写一个最简单的汇编器AssA(可以只支持一部分指令),手工翻译成二进制指令码,在裸机上跑。

然后用这个AssA支持的汇编语言或子集写一个功能略强支持全部指令的汇编器AssB,用AssA汇编后生成目标码。

用汇编语言写一个宏汇编器AssC,用AssB生成目标码。

用汇编语言写一个最简单的C语言子集编译器C tiny,可以仅仅支持整数和指针数据类型,输出汇编语言源文件。用AssC汇编这个编译器。

以后就是用C tiny写一个支持更多数据类型的C语言子集编译器C small, 用C tiny 编译C small,再用 AssC 生成目标码。

如果愿意,这时候可以再用可执行的C small 编译器编译C small自己的源代码,再用AssC生成目标码,形成新的C small编译器。

下面,可以选择用C small重写汇编器AssD……

接着再用C small支持的C语言子集,编写更大的C语言子集编译器C medium,然后是C big、操作系统、在操作系统上运行的新C编译器 …… 

这是仅有目标计算机自己的情况下玩的自举开发途径。如果已经有了一套完整的体系结构能运行C语言和编译器,可以在这个机器上开发改写C编译器,让其产生目标平台的可执行代码,也就是通常说的“交叉编译”。常见的例子,就是在PC上开发MCS51单片机程序。

在GCC自己编译自己的过程里,有三个配置选项:build host target,分别代表编译编译器的平台、编译器运行的平台和编译生成代码的目标平台。举例而言:你可以在Linux/x86 平台上用GCC编译GCC自己,生成一个运行在Solaris/SPARC平台上的新版本GCC,这个GCC在SUN工作站上运行后,可以生成运行在裸机上的ARM目标代码……
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
计算机识别人类的语音需要靠编译器,编译器是怎么做的呢?
通过GCC编译器编译c语言
gcc编译过程介绍
你真的懂''Hello world''吗?从编译器到OS内核系列:编译器基本概念
C /C 入门之编译连接
所有的编程语言最后会编译成C,再编译成汇编,最后落实到硬件操作上吗?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服