引言
自从华为方舟编译器横空出世,一举成为全民网红之后,一下子点燃了大家对编译器的热情。不过,对于大多数人来说,编译器依旧是遥不可及的神秘存在。
今天,介绍一个国外大牛写的C语言编译器 - C4,揭开编译器的神秘面纱。原来实现一个具备基本功能的编译器,竟是如此简单!
C4:4个函数实现的C语言编译器
C4, C in four functions。
它是一个C语言编译器项目(项目地址在文末),整个实现只有:
一个C语言源码文件528行C语言代码4个函数
仅此而已。
读懂这4个函数,528行代码,你也可以实现一个C语言编译器-1.jpg (34.72 KB, 下载次数: 0)
2020-7-17 12:33 上传
C4代码仓库
它简洁,却不简单。
它具备完整的词法分析、语法分析、简单的语义检查、代码生成、运行时环境(即虚拟机)。
与常见的C编译器不同的是,它把C语言源程序编译成字节码(bytecode),然后在一个精简的虚拟机中解释执行。
你以为这样就完了?不,它令人称道之处远不止如此!
C4:可以自举的C语言编译器
若只是精简,或许它还并不那么令人惊奇,毕竟网上有很多类似的编译器项目,其中不乏一些非常简单优雅,且非常出色的项目。
然而,C4最惊艳的地方是,它可以自举。
所谓自举,简单来说,就是自己编译自己。当然,最初始的那个C4编译器的可执行文件,还是必须要通过GCC、Clang等编译器进行编译生成。
我们下面演示一下“Hello, World!”的例子,和C4自举的例子。
Hello, World示例
先用GCC把C4编译成可执行文件:
gcc c4.c -o c4
运行“Hello, World!”测试程序hello.c:
读懂这4个函数,528行代码,你也可以实现一个C语言编译器-2.jpg (12.31 KB, 下载次数: 0)
2020-7-17 12:33 上传
结果如图:
<