※ 引述《lolij.bbs@ptt.cc (柔麗招來)》之銘言:
> ※ 引述《leicheong.bbs@bbs.sayya.org (理昌)》之銘言:
> : 以下是這段程式館碼在VC7中compile的結果:
> 因為工作的關係, 時常使用 Intel C++ Compiler.
> 這種 code 經過 ICC 最佳化之後, 不會有任何運算出現.
> 簡單的說, 有算跟沒算從外表看不出來, 因此不需要真的產生程式碼.
> 如果最後加一行 printf("%d", b);
> 那麼... compile 出來的組語, 跟 printf("10"); 是一樣的
> 沒有 a 也沒有 b 會佔用記憶體, 不需要存取, 也沒有 b+=a 的過程.
> 僅供參考.
對這部份有一點疑問
printf 應該存在於 CRT 已編譯完成的函式庫, 還能被 compiler 最佳化嗎?
open source 的環境我比較不了解
但在 windows 這樣的環境下, 不管是從 lib 檔把機器碼複製進來
或是僅 link 到 dynamic library 的對應函式
compiler 能做的應該只是把 "%d" 的pointer和 b 推進 stack 後呼叫 printf
而沒辦法跑進去最佳化吧?
--
▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄ <telnet://bbs.cs.nctu.edu.tw>
█▄▄▄▄█ █ ▄▄▄▄▄█ Player: coldstar
▄█▄▄▄▄█ ▄▄▄█ █▄▄▄▄▄ From: scarlet.Dorm8.NCTU.edu.tw
☆ 次世代BS2 ☆ 可申請個人板 150MB 超大相簿 http://pic.bs2.to 資訊人 250MB