为什么GCC 3.x对大小进行了充分的优化,而GCC 4.x没有对这段代码进行优化?

为什么GCC 3.x对大小进行了充分的优化,而GCC 4.x没有对这段代码进行优化?,gcc,boot,bootloader,Gcc,Boot,Bootloader,这是耶鲁操作系统课程中使用的微核存储库的一部分。我不在那门课上——这不是家庭作业问题。这是一个源于好奇心的问题,当观察到另一所完全不同的大学里有人在尝试咯咯笑的课程时 显然,在GCC4.x中编译该代码会导致一个大于扇区(512字节)的可执行文件,因此不适合用作引导加载程序。在GCC3.x中编译它会产生一些结果,GCC在主要版本之间获得新的优化选项并不少见。在任何-O[123]级别中,它们中的一些可能在默认情况下处于启用状态,并且它们可能会针对速度而不是大小进行优化 在不知道编译时使用的实际选项的

这是耶鲁操作系统课程中使用的微核存储库的一部分。我不在那门课上——这不是家庭作业问题。这是一个源于好奇心的问题,当观察到另一所完全不同的大学里有人在尝试咯咯笑的课程时


显然,在GCC4.x中编译该代码会导致一个大于扇区(512字节)的可执行文件,因此不适合用作引导加载程序。在GCC3.x中编译它会产生一些结果,GCC在主要版本之间获得新的优化选项并不少见。在任何
-O[123]
级别中,它们中的一些可能在默认情况下处于启用状态,并且它们可能会针对速度而不是大小进行优化


在不知道编译时使用的实际选项的情况下,很难给出具体的答案。

它们都在链接的makefile中-O0是感兴趣的主要标志,并且出现在所有编译中。没有使用其他相关的-f标志(来自makefile的afaik)。Ld被传递标志以去除无关符号。