总结感想
经过一学期编译实验的磨练,深刻领悟了第一次实验课上老师反复提起的“很难”。
最开始的词法分析、语法分析还算平和,语义分析也能够应付。等开始中间代码生成的时候简直痛不欲生,生成llvm我就花了整整一周时间,最开始理解llvm的指令都费劲(尤其是getelementptr的用法),然后去翻了很多资料,看了讲座、教程,甚至去翻了翻llvm的官方文档,终于有了点眉目,逐渐理清了llvm的结构,不得不说“一切皆Value”的设计很巧妙,但是代码量也十分恐怖。后来想尝试着生成mips再做做优化,但是生成目标代码又花了快一周的时间(嗯感觉自己效率真的很低),也de了很久的bug,加上快学期末了各种大作业,很多事情堆到了一起,所以即便感觉自己还比较早开始了代码生成的作业,但是留给代码优化的时间仍然很少,所以我只做了一些简单的优化。
总得来说,自己搭建一个编译器加深了我对编译的理解,看着自己几千行的代码真的感概良多,编译真是一件复杂的事情,完成编译实验的道路困难重重,但也算坚持到了最后,比较遗憾的是感觉时间真的很紧,这学期的事情也真的很多,没有办法去细细琢磨优化的事情了。最后,感谢助教们的答疑还有录制的讲座、ppt,对我的帮助很大!