小型编译器设计实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第一篇 PIC16Fxxxx编译器(cc16e.exe)的设计

有必要说明,本篇所使用的“编译器”一词是狭义的概念,只涵盖将源程序解析并转换至目标处理器汇编语言格式文件的过程和工具。而行业中所谓的“编译器”通常是广义的,是指将源程序转换成最终目标处理器能运行的二进制格式文件。因此,前者在概念上只是后者的一个子集。尽管如此,将C语言源程序解析并转换至目标处理器的过程是最关键、也是最艰难的操作。因为它不仅可以进行高、低级语言之间的转译,还可以从语言结构上将二维概念的源程序转换成单纯的目标处理器指令流。

本书选择加强型PIC16Fxxxx(Enhanced PIC16 core)作为实战对象,主要基于以下几个原因。

(1)PIC16F 系列的8位微处理器在全球市场中拥有广大的用户。其加强型PIC16Fxxxx约于2009年问世,与基本型PIC16F系列相比,不仅系统结构上有很高的兼容度,性能也有相应的提高,并逐渐成为越来越多用户的选择。

(2)PIC16Fxxxx 不仅在性能上,而且在结构上均介于PIC16F 系列和PIC18F系列之间。选择PIC16Fxxxx作为实战例子有一定的承前启后的意义。

(3)与基本型PIC16F/PIC18F系列相比,PIC16Fxxxx结构更显得“规范”,这对于理解编译器的设计会容易一点。

PIC16F/PIC16Fxxxx系列微处理器的结构较为特殊,对于C语言的支持显得很不友好,这无疑对C语言编译器的设计带来难度和障碍。这大概也是GNU C/C++编译器至今未能被移植到这些产品系列编译器上的主要原因。

本篇将详细叙述编译器具体设计过程。