2013-11-22 23 views
2

https://github.com/bford/PIOS/tree/lab1/boot爲什麼GCC 3.x對尺寸進行了充分優化,但GCC 4.x不適用於此代碼?

這是耶魯操作系統課程中使用的微內核存儲庫的一部分。我不是那個課程 - 這不是一個家庭作業問題。這是一個問題,源於好奇心觀察別人在一個完全不同的大學嘗試的笑話作業...

顯然,在GCC 4.x編譯該代碼導致可執行文件大於扇區(512字節),因此不適合作爲引導加載程序。在GCC 3.x中編譯它會產生大約500字節的<。使用的優化標誌是相同的,並且可以在位於該存儲庫中的Makefiles中看到。

我的問題是: GCC 3.x codegen和GCC 4.x codegen之間有什麼變化,可能導致'迴歸'?

回答

0

gcc在主要版本之間獲得新的優化選項並不少見。它們中的一些可能默認在-O[123]級別中的任何一個上,並且它們可能優化速度而不是大小。

如果不知道用於編譯的實際選項,很難給出具體的答案。

+0

它們都在鏈接的makefile中。 -O0是感興趣的主要標誌,並且存在於所有編譯中。沒有使用其他相關的-f標誌(來自makefile的afaik)。 Ld已通過標誌去除無關符號。 – user