论文部分内容阅读
在教学实验中直接使用CoreABC指令集系统进行代码编程,对于初步接触数字电路的学生而言是有一定难度的,从而造成难以完成实验目标以及理解CoreABC微控制系统。如果用标准C语言程序代替CoreABC指令程序,则可降低程序编写的难度,从而相应的提高了教学及开发效率。CoreABC代码生成器是在AnyviewC内嵌的C语言编译器的基础上,结合CoreABC指令集系统进行设计实现,目标是将标准C语言代码程序转换为CoreABC指令序列代码,使用户编写易懂的C语言程序,直接得到目标指令序列。代码生成器的设计与实现包括两大部分:生成器前端和后端。前端通常处理词法分析、语法分析和语法制导翻译,最终得到前端处理结果集,后端则通过处理前端结果集中的每一个元素,最终得到目标指令序列代码。本课题的关键部分在于生成器前端设计与实现的正确性,该部分主要体现在对AnyviewC内嵌C语言编译器的扩展与修改,包括C语言库函数的扩展、词法分析扩展、语法分析以及制导翻译扩展设计等,还牵涉到CoreABC寄存器以及内存地址的设计。CoreABC中与硬件操作相关的,C语言无法直接实现同等功能,针对这些特殊指令,需借助扩展为库函数的方式实现相同功能;语法分析和制导翻译过程足本课题设计的关键部分,针对C语言的每一个操作符、控制流结构、函数调用等都要重新设计实现,最终使其中间代码转换为能够得到CoreABC指令序列的前端结果集。CoreABC代码生成器的后端部分是在前端处理结果的基础上进行的,依据设计的CoreABC指令集对应的机器码以及指令所需操作数的个数等,处理前段结果集,得到最终的CoreABC目标指令序列。本文阐述了CoreABC代码生成器的设计与实现,重点体现在设计部分,通过分析与研究标准C语言和CoreABC指令系统,设计代码生成器的前端和后端两大部分,实现并进行相关实验验证分析。最后通过一些例子进行试验验证该设计方案的可行性,并通过相关分析得出其具有一定的可推广性。