书栈网 · BookStack 本次搜索耗时 0.018 秒,为您找到 39 个相关结果.
  • 2.7 典型 TinyC 程序

    2.7 典型 TinyC 程序 2.7 典型 TinyC 程序 好了,以上就是 TinyC 的全部了,够简单吧。典型的 TinyC 程序如下: #include "for_gcc_build.hh" // only for gcc, TinyC will ignore it.   int main () { int ...
  • 16.1 改进 TinyC 前端

    16.1 改进 TinyC 前端 16.1 改进 TinyC 前端 上一章的 TinyC 后端中,为了降低 Pcode 命令的翻译难度,对 arg / var / ENDFUNC 命令的格式进行了改写,因此需要改进 TinyC 前端,使之能生成能被 TinyC 后端所识别的新格式 Pcode 命令。具体来说,对于下面这段源程序 test.c : ...
  • 16.2 TinyC 编译器

    16.2 TinyC 编译器 16.2 TinyC 编译器 现在可以将 TinyC 前端和 TinyC 后端整合起来了。新建一个空的 tinyc 目录,然后 cd 到此目录,之后新建一个 sources 目录,然后将以下 7 个文件放到 sources 目录下: scanner.l , 词法分析文件,和上一节相同; parser.y ...
  • 第15章 TinyC 后端

    第15章 TinyC 后端 第15章 TinyC 后端 至此我们的 TinyC 前端已经完成,可以将 TinyC 源程序编译成中间代码 Pcode ,且可以用 Pcode 模拟器来运行 TinyC 前端生成的 Pcode 。接下来编写 TinyC 后端,将中间代码编译、链接成可执行源程序。我们将针对所有 Pcode 命令编写同名的 NASM 宏将 P...
  • 第14章 TinyC 前端

    第14章 TinyC 前端 第14章 TinyC 前端 上一章介绍了 bison 中一些常用功能的使用方法,bison 是一个非常强大的语法分析工具,读者还可以阅读一下 bison 的文档进行更深入的学习。本章介绍如何利用 flex 和 bison 实现 TinyC 编译器的前端,建议读者先复习一下 第 5 章 手工编译 TinyC ,再来看本章的...
  • 第05章 手工编译 TinyC

    第05章 手工编译 TinyC 第05章 手工编译 TinyC 前面 3 章介绍了 TinyC 编译器的源程序 TinyC 和中间代码 Pcode 的语法结构,介绍了部分 Pcode 命令和 TinyC 语句的对应关系,本章介绍如何手工将 TinyC 源程序翻译成 Pcode ,因为只有我们对翻译的过程和细节都了如指掌后,才可能编写出程序来进行自动翻...
  • 第02章 源程序 TinyC

    第02章 源程序 TinyC 第02章 源程序 TinyC TinyC 只用到了 C 语言中非常小的一部分,是 C 语言中非常小的子集,所有 C 语法的规则均适用于 TinyC 语法, TinyC 源程序可直接用 gcc 编译。 C 语法本书不介绍,仅介绍 TinyC 特有的部分。
  • 第16章 TinyC 编译器

    第16章 TinyC 编译器 第16章 TinyC 编译器 在第 14 章中,完成了 TinyC 前端,可以将 TinyC 源程序编译成中间代码 Pcode;在第 15 章中,完成了 TinyC 后端,可以将改写后的中间代码 Pcode 翻译、汇编并链接成可执行程序;现在,是时候将二者结合起来形成最终的 TinyC 编译器了。
  • 8.2 使用 flex 对 TinyC 源文件进行词法分析

    8.2 使用 flex 对 TinyC 源文件进行词法分析 8.2 使用 flex 对 TinyC 源文件进行词法分析 上一节的第二个例子 word-spliter 就是一个原始的分词器,在此例的框架上加以扩展就可以做为 TinyC 的词法分析器了。 word-spliter 中只有 WORD 这一种类型的 token ,所有连续的非空格字符串都...
  • 6.3 TinyC 编译器的工作流程

    6.3 TinyC 编译器的工作流程 6.3 TinyC 编译器的工作流程 TinyC 编译器是一个非常 “tiny” 的编译器,仅保留了编译器中最基本的功能,只保留了词法分析、语法分析、中间代码生成以及目标代码生成,其中中间代码是在语法分析的过程中同步进行的,TinyC 编译器的工作流程如下: 图6.8 TinyC 编译器的工作流程 从下一章开...