看板 C_and_CPP 關於我們 聯絡資訊
不確定跟 assembly 相關的問題能不能在這裡問 開發平台(Platform): (Ex: Win10, Linux, ...) docker ubuntu x86-64 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 問題(Question): 在練習 assembly 時發現如果我的 c code 寫成下圖: https://imgur.com/8bB5u4V.png
用 objdump 的結果會像這樣 https://imgur.com/GK0gnHi.png
想請問為什麼 assembly 會是比較 1, 2 和 default 沒有判斷 a=0 的狀況 而且 0x80483f9 這行會被跳過呢? 謝謝 -- 我像是可笑的唐吉軻德, 一次又一次地和生命中無常的巨獸奮戰而不自覺。 到最後,掌控的慾望像是糾結的繩索交纏,愈拉愈緊。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.77.186 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1506742517.A.B35.html ※ 編輯: shi359 (140.114.77.186), 09/30/2017 11:36:56
Schottky: test eax, eax 就是判斷 eax 是不是 0 了 09/30 11:40
Schottky: 你要這樣玩的話,要了解有些時候 compiler 做一些神妙的 09/30 11:42
Schottky: 最佳化,人類並不容易看懂... 今天這個算最簡單的了... 09/30 11:42
了解 謝謝 :) ※ 編輯: shi359 (140.114.77.186), 09/30/2017 11:46:44
dmeiki: 可以參考csapp 第三章了解一些簡單情況下,組語更動執行順 09/30 11:57
dmeiki: 序的行為 09/30 11:57
james732: 開個最佳化應該會變得很有趣 09/30 15:39
PkmX: 最佳化開了就什麼都沒有了吧xd 09/30 22:22