# BUAA-Compiler-Pascal-to-x86 **Repository Path**: kingfish404/BUAA-Compiler-Pascal-to-x86 ## Basic Information - **Project Name**: BUAA-Compiler-Pascal-to-x86 - **Description**: 北航计算机学院本科《编译原理》实验课的大作业。源语言为类PASCAL语言,目标语言为x86汇编,编译器用C++语言实现。 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-02-16 - **Last Updated**: 2022-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 说明 北航计算机学院本科《编译原理》实验课的大作业。要求是用 C 语言或 C++ 实现一个编译器,能编译给定语法的语言(简化版的 Pascal 或 C,这两个一年一换,到我这年正好是类 Pascal 语言)。 难度分为三个等级:最低难度:生成的目标代码是某种中间语言,同时要实现一个关于这种目标语言的解释器,使其能运行;中等难度:生成的目标语言是 MIPS 或 x86 汇编,能直接在汇编器上跑,不需要编译优化;最高难度:生成的目标语言是 MIPS 或 x86 汇编,能直接在汇编器上跑,需要做至少一种编译优化,越多越好。 作业是迭代式的,一次添加一个模块。所以在实现时要考虑后续的扩展。同时,作业的安排也很合理,文档写了很多,很锻炼工程素质。 老师让提交的代码是以 VS 2013 工程的形式打包提交的,这里我把工程文件全部去掉,只上传源代码以及老师让提交的文档等,方便大家学习。 这个作业是在大三时做的,我直接选了最高难度来做。 抱着学习的心态,我选择了用 C++ 来作为我的编程语言,因为之前只是旁听过 C++ 的课,没有真正用 C++ 写过程序,想借此机会学习 C++。选择了目标语言为 x86 汇编,因为之前没接触过 x86 汇编,做计算机组成原理实验时,只学了 MIPS 汇编。 一点遗憾,目标代码生成 Debug 时间太长,导致没有时间写编译优化了,最终只实现了临时寄存器池。 我的很多未实现的思考,以及容易踩到坑的地方,写在了申优文档 "08_最终结果\文档\编译课设申优文档.docx" 里,供后人学习。 欢迎大家批评与交流。