IrisesD / Compiler-H-Project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SysYFCodeGenOpt

介绍

本项目提供SysYF语言的中间表示(IR)优化以及代码生成的编译器实践框架和选题。SysYF语言是全国编译系统设计赛要求实现的SysY语言的扩展语言,SysYF IR兼容LLVM IR。该项目由**科学技术大学张昱老师研究组设计和开发,旨在引导更多学生和社会人员学习和实践编译器相关知识,开展语言设计与实现、程序分析、编译优化等研发,让越来越多的人有能力运用程序语言基础提供可靠、高效的软件解决方案。

概述

  • 分组实验:大实验以组为单位。
  • 公开仓库:各组在希冀平台使用小组共有的仓库进行提交
  • 小组任务:各组需要完成下面的必做部分,另外从选做部分中选择一项开展。
  • 实验提交:各组需要在2022-12-25 22:00:00前在助教处确定选题
  • 时间安排:实验时间初步定为2022-12-25 - 2023-01-10 23:59:59。答辩日期定为2023-01-12

任务说明

本次实验分为必做部分和选做部分。你需要完成必做的全部内容并在选做的若干个选题中选择一个来做。你还需要完成一份实验报告,讲述你所做的工作。

必做部分

必做部分文件夹在SysYF_Pass_Student,文档见SysYF_Pass_Student/README.md

选做部分

你需要在以下数字中选择一个,填在select.txt中。

  • 1表示进阶优化,或者其他基于SysYF进行硬件无关优化的自由发挥;
  • 2表示运行时空间管理和代码生成,或者其他基于SysYF进行ARM相关优化的自由发挥;
  • 3表示其他不基于SysYF的自由发挥,由于评测条件的限制,建议进行兼容x86/64架构的优化。

select.txt将被用于自动选择项目进行评测。

选题1-进阶优化

该部分文件夹在SysYF_Pass_Student

在必做的基础上,你需要自行选择至少2个不同的优化Pass来进行进阶优化,并且设计测试程序来体现优化效果,撰写相应文档。详细说明和具体提交要求见SysYF_Pass_Student/doc/进阶优化.md

选题2-运行时空间管理与代码生成

该部分文件夹在SysYF_Backend_Student

详细文档见backend.md

选题3-自由发挥

你也可以不做以上给出的选题,而做你认为有意义的选题,但需要在实验报告、答辩中详细阐述你所做的工作。你需要在实验报告中给出至少以下几方面的内容:

  • 问题描述:陈述你要解决的问题,它在哪些场景下存在缺陷或改进空间?
  • 背景与动机:陈述所要解决的问题的相关背景,比如在什么情况下会出现,有什么样的影响;该问题若解决,会有什么样的价值和意义;该问题相关的研究现状;等等。
  • 设计思路:解决问题的流程包含哪些关键步骤和想法?
  • 实现要点:实际实现时所采用的关键数据结构,存在哪些与理论不完全一致的部分或者需要特殊处理的?
  • 评测:需要自行提供测试例子以及测试脚本,指出在什么样的测试例子上运行能够突显优化效果,或者会引起局限?
  • 参考文献:列出所参考的相关工作。

评测部分,请编写自动评测脚本FreeStyle/test/student/eval.sh与样例(样例放在FreeStyle/test/student目录下)进行展示。脚本将会在bash环境下执行。该测试脚本可用于驱动其他脚本。请在脚本中自行添加在评测时要用到的环境变量。脚本中应采用相对路径,避免采用绝对路径,因为提交的项目可能置于评测机的不同路径下。

学生编写的评测脚本运行时向stdout的输出将被收集作为待助教评判的内容。

评测说明

本实验设计及软件包的研发者

该版本的实验由**科学技术大学计算机科学与技术学院张昱老师和承担2022年秋季学期《编译原理和技术(H)》的4位助教(2021级研究生和2019级本科生)研讨而设计,内容基于2021年秋季学期的6位助教实现的初版。实验软件包中如有不当或问题,欢迎反馈。

About


Languages

Language:C++ 97.5%Language:Python 1.7%Language:CMake 0.6%Language:C 0.1%Language:Shell 0.1%