Email: [email protected]
- About the Project
- Getting Started
- Usage
- 功能定制
- Roadmap
- Contributing
- License
- Contact
- Acknowledgements
- 免责声明
运行结果:(其中有一个样例是RE,可能是由于我们函数合并的优化没有考虑数组传入的情况)
编译器一共包括词法分析
、语法分析
、语义分析
、优化
、目标代码
等6个部分。
语法树结构部分:
词法分析部分:
语法分析部分:
语义分析部分:
目标代码生成部分:
代码优化部分:
系统架构:
SysY 语言是 C 语言的一个子集。每个 SysY程序的源码存储在一个扩展名为 sy 的文件中。该文件中有且仅有一个名为 main的主函数定义,还可以包含若干全局变量声明、常量声明和其他函数定义。SysY语言支持 int 类型和元素为 int 类型且按行优先存储的多维数组类型,其中 int 型整数为 32 位有符号数;const 修饰符用于声明常量。
详细的SysY语言定义请参考SysY语言定义.pdf
、SysY运行时库.pdf
。
该编译器主要用来将SysY语言编译为arm汇编指令,并且对编译生成的代码进行优化。
功能:
- 词法分析
- 语法分析
- 语义分析
- 目标代码
- 优化
- 对常量表达式进行化简求值
- 合并冗余的函数调用
- 高频访问的变量使用寄存器优化,减少内存访问。
- 合并arm代码中不必要的mov指令。
- 将函数内联进代码中,减少函数调用开销。
- 更多
依赖
这个章节将指导你简单的部署和使用该软件。
这个项目的依赖安装步骤在下面给出。
sudo apt-get install cmake
sudo apt-get install make
sudo apt-get install gcc
- 进入项目根目录
cd /path/to/your/project
- 在shell中运行一下代码进行编译
mkdir build
cd build
rm CMake* cmake_install.cmake Makefile compiler -r;
cmake ../ && make VERBOSE=1
- 在build文件夹中会生成一个compiler可执行文件。
- 编译sy文件不进行优化
compiler ‘输入文件.sy’ -S -o ‘输出文件.s’
- 编译sy文件进行O2优化
compiler ‘输入文件.sy’ -S -o ‘输出文件.s’ -O2
如果需要功能定制,请联系作者 [email protected]
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.
Davies - @qq - 1182176003
Davies - @email - [email protected]
-
该软件中所包含的部分内容,包括文字、图片、音频、视频、软件、代码、以及网页版式设计等可能来源于网上搜集。
-
该软件提供的内容仅用于个人学习、研究或欣赏,不可使用于商业和其它意图,一切关于该软件的不正当使用行为均与我们无关,亦不承担任何法律责任。使用该软件应遵守相关法律的规定,通过使用该软件随之而来的风险与我们无关,若使用不当,后果均由个人承担。
-
该软件不提供任何形式的保证。我们不保证内容的正确性与完整性。所有与使用该软件的直接风险均由用户承担。
-
如果您认为该软件中所包含的部分内容侵犯了您的权益,请及时通知我们,我们将尽快予以修正或删除。