一、实验目的:
了解工业界常用的编译器GCC,熟悉编译器的安装和使用过程,观察编译器工作过程中生成的中间文件的格式和内容,了解编译器的优化效果,为编译器的学习和构造奠定良好的基础。
二、实验内容:
1.查看GCC编译器的版本
2.使用GCC编译器编译C程序文件,并运行生成的可执行文件
3.查看GCC编译器的预处理结果
4.查看GCC编译器生成的目标代码
5.比较GCC编译器在不同优化等级-O0与-O2下生成的目标代码的区别
三、实验环境:
Linux系统(Ubuntu、Debian、Gentoo等系统均可)
gcc 7.3.0 或更高版本
四、实验过程描述:
GCC 编译器,完成编译器安装和测试程序编写后,按如下步骤完成:
1.查看编译器的版本
2.使用编译器编译C程序文件,并运行生成的可执行文件
3.查看预处理结果:gcc -E prime.c -o prime.i
4.查看生成的目标代码(汇编代码):gcc –S prime.c –o prime.s
5.汇编代码转化成及其码,生成可重定位目标gcc -c prime.s -o prime.o
五、实验结果及分析:
1.查看GCC编译器版本
2.使用编译器编译C程序文件,并运行生成可执行文件
3.查看预处理结果
使用set nu 设置行号,预处理结果有1842行
4.查看GCC编译器生成目标代码
5.比较GCC编译器在不同优化等级下生成目标代码区别
根据第四步,优化前有182行;经过优化后,缩减到了118行。
六、实验心得体会:
通过此次实验,让我对GCC编译器有了一定的认识。在此次实验过程中,不仅用到编译原理的知识,还需要掌握部分Linux系统指令,要学会融会贯通。在实验过程中,虽然有部分实验不会做,但及时向同学寻求帮助,完成了实验。