一种C语言编译系统的实现设想

可能的方案选择

  • 1、可直接将标准C90的代码编译成特定目标机器语言(x86)的编译器
  • 2、将标准C90的代码编译成某种约定好的VM字节码的编译器,以及可执行此字节码的虚拟机

实现的大概说明

我设想用 C++ 编程语言来实现这个编译器(可能附带虚拟机)

如果要实现第二种模式的话,也需要设计一套满足具体执行需求的虚拟机指令集(Virtual Machine Instruction Set)

词法分析器、语法分析器,语义分析及代码生成器,甚至是装载器、虚拟机等模块,也得基于底层给出 C++ 类的实现,直到构造、组合成一套完整的编译系统

对于本人而言的技术难点

  • 语义分析及代码生成器这部分我曾经没有实现经验,这次实现是摸着石头过河,也是一种新的挑战
  • C90 标准的细节需要自己去更深层次地掌握,避免出现与C90标准规定不符合、不兼容的内容
  • 编译系统的实现的复杂度比较高,整体模块设计十分复杂,从底层一层一层地设计、然后加以实现、甚至是编写过程中的排错工作,对于本人也是不小的挑战

2 thoughts on “一种C语言编译系统的实现设想

发表评论

电子邮件地址不会被公开。 必填项已用*标注