论文部分内容阅读
堆栈处理器由于其快速的中断处理能力、极强的过程调用能力、代码尺寸小等优点,一直应用于工业控制和航空航天领域中。自堆栈处理器诞生以来,ALGOL、FORTH这两种语言一直作为堆栈处理器的栈操作语言,并且成为区分第一代和第二代堆栈处理器的一条重要标准。尽管这两种语言在堆栈处理器领域应用广泛,但缺乏通用性。C语言是传统的高级程序设计语言,其底层操作能力和通用性不言而喻。本文的主要目的就是利用LCC实现一个C语言子集的编译器,该编译器能够将C语言源代码编译成可以在目标堆栈处理器上直接执行的指令。本文的主要工作有:(1)选择LCC作为编译器的前端;(2)重新书写符合LBURG规范的堆栈处理器描述文件STACK16,并以此为输入,利用lburg程序构建了汇编代码生成器;(3)参照X86汇编文件格式设计符合目标指令集的汇编文件格式;(4)设计并实现一个汇编器;(5)总结现有的栈调度算法;(6)设计并实现一个汇编指令优化器。通过上述工作,本文成功实现了既定目标,并利用ModelSim验证了汇编代码生成器、汇编器、汇编指令优化器的正确性。