为什么GCC 3.x能够充分优化尺寸,但GCC 4.x不适用于此代码?

时间:2013-11-22 09:06:16

标签: gcc boot bootloader

https://github.com/bford/PIOS/tree/lab1/boot

这是耶鲁操作系统课程中使用的微内核库的一部分。我不是那个课程 - 这不是一个功课问题。这是一个问题,源于对一个完全不同的大学里观察其他人的好奇心,他们在尝试嘻嘻哈哈的课程......

显然,在GCC 4.x中编译该代码会导致可执行文件大于扇区(512字节),因此不适合用作引导加载程序。在GCC 3.x中进行编译会产生大小<500字节的内容。使用的优化标志是相同的,可以在位于该存储库中的Makefile中看到。

我的问题是: GCC 3.x codegen和GCC 4.x codegen之间的世界变化可能导致“回归”?

1 个答案:

答案 0 :(得分:0)

gcc在主要版本之间获得新的优化选项并不罕见。默认情况下,其中一些可能会在任何-O[123]级别中启用,并且可能会针对速度而非大小进行优化。

如果不知道用于编译的实际选项,很难给出具体的答案。