第01章 概 述

    TinyC 编译器可将 TinyC 源程序编译成 Linux 下的可执行程序,其编译及运行基本流程如下图,首先利用 TinyC 前端将 TinyC 源程序编译成中间代码 Pcode ,再利用 Nasm 的宏程序将 Pcode 翻译成 x86(32位) 汇编指令,然后利用 Nasm 汇编成二进制目标程序,最后链接成 Linux 下的 32 位可执行程序,可直接在 Linux 下运行。另外,中间代码 Pcode 也可以用 Pcode 模拟器直接运行。图1.1 TinyC 编译及运行基本流程

    上图中绿色部分的 TinyC 前端、 Nasm 宏以及 Pcode 模拟器为由本人编程实现的部分,其他则是利用了 Nasm 和 ld 来生成可执行的二进制机器码。本书将 Nasm 宏、 Nasm 汇编器、 ld 链接器一起称为 TinyC 后端,将 TinyC 前端和 TinyC 后端一起称为 TinyC 编译器。

    本书的组织结构如下:

    本书的主要目的是用简单的实例来说明编译原理中的一般过程及原理,让读者在自己动手的实践过程中对编译原理有更深的理解,读者需要具备以下基础知识:

    (1) 熟悉计算机系统架构,熟悉 x86 汇编;

    (2) 熟练使用 C 语言,熟悉常见的算法,熟悉指针、内存布局等概念;

    (3) 会简单的 Linux 终端操作命令,会简单的 makefile 语法。

    TinyC 编译器在 Linux/debian 系统下开发完成,建议读者也使用 debian 或其他桌面版 Linux ,若在 windows 环境下,可以使用 VirtualBox 装一个虚拟 Linux 系统。本书所有源程序均放在 https://github.com/pandolia/tinyc

    第 1 章完