※ 引述《leicheong.bbs@bbs.sayya.org (理昌)》之銘言:
: ※ 引述《leicheong (理昌)》之銘言:
: > 噢... 我倒忘了自己把真正function call的部份strip去了... :P
: > 00401028 |. 68 D8604000 PUSH test.004060D8 ; ASCII "%d"
: > 0040102D |. E8 09000000 CALL test.0040103B
: 以上是未optimize的版本, optimize後的版本如下(完整的main()):
: 00401000 /$ 6A 0A PUSH 0A
: 00401002 |. 68 D8604000 PUSH test.004060D8 ; ASCII "%d"
: 00401007 |. E8 06000000 CALL test.00401012
: 0040100C |. 83C4 08 ADD ESP,8
: 0040100F |. 33C0 XOR EAX,EAX
: 00401011 \. C3 RETN
: > 在push 10後是有再push "%d"的指標啦, 不過這裡有一點有趣的地方,
: > 就是"%d"這字串的位置不在data segment(00408000-00409FFF)
: > 也不在code segment(00401000-00405FFF),卻在.rdata(00406000-00407FFF)裡,
: > 真想不到.
你又一次不經測試就直接回其他的網友. 當網友質疑 compiler 不太可能
把兩個 printf 的參數, 最佳化成一個參數時, 你連測試都沒有測試就直接
回答是某某原因, 當別人對你的 "解答" 有疑問後, 你又沒有測試就回答另
一個原因, 結果你的回答還是不對, 你又再換了一個. 重頭到尾你一共說了
library/package/DLL/calling convension 這幾個原因使 compiler 把兩個
printf 的參數最佳化成一個, 結果, 最後證實 compiler 根本不會做這樣子
的最佳化, 你又一次的誤導網友.
光是這一個討論串你已是第二次不經測試就給錯誤的答案, 每次還說的一付很有
信心的樣子, 誤導其他的網友. 麻煩你以後測試後有把握再 "解答" 其他網友
的問題吧.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 69.236.127.197