Flex/Bison 基于编译器 - 二进制生成

Flex/Bison based compiler - binary generation

我有一个使用 Flex/Bison 和 C++ 编写的 Pascal 子集编译器。作为输入,我使用自己的 .pas 文件。我注意到,当我 运行 我的编译器使用这些输入时,它更像一个解释器,因为我得到了即时结果。我想获取二进制文件以避免每次都使用编译器。我的问题是:

生成二进制文件的最佳方法是什么?

你可以这样来做(我很多年前就是这样做的):

  1. 使用Flex/Bison,你必须生成伪asm代码。
  2. 在下一步中,您必须将其转换为给定 CPU 架构的宏程序集 (x86/ARM/MC68k/PPC/...)
  3. 将输出的 asm 文件编译成目标文件 (.o)
  4. Link .o file/files 将需要的库 (.lib) 放入可执行文件中。

此外,如上所说,尝试找一些关于编译器的书。最好的是 龙书,一种编译器圣经:https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools