嗨 我感興趣的是什麼是彙編代碼的gcc從這個代碼生成(這只是虛擬的代碼來說明我的觀點):GCC寄存器優化
int a = 0;
int foo(void)
{
int result = a;
a += 2;
return result;
}
我驚訝於該GCC拷貝的變量來堆棧然後從堆棧到寄存器,以便它可以返回它。當我在寄存器中添加結果聲明時,它優化了代碼而不是使用堆棧,而是直接將變量複製到寄存器中。我知道這並沒有什麼區別,但我想知道gcc是否沒有任何好理由暗中做出這樣的優化。我希望我明確表示我在說什麼...
任何想法?
您應該提供編譯器版本,命令行和彙編輸出。 – 2011-04-09 14:38:47
帕斯卡爾的評論+1。在談論諸如編譯器優化之類的細節時,儘可能給這裏的人們儘可能多的上下文。 (也就是說,這聽起來像你沒有使用最積極的優化。) – 2011-04-09 14:41:08
這裏最重要的部分可能是你編譯這個代碼是否啓用優化 – nos 2011-04-09 14:45:48