[問題] C 轉成 assembly 時 switch 的問題

看板C_and_CPP (C/C++)作者 (歸人還是過客)時間8年前 (2017/09/30 11:35), 8年前編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
不確定跟 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

09/30 11:40, , 1F
test eax, eax 就是判斷 eax 是不是 0 了
09/30 11:40, 1F

09/30 11:42, , 2F
你要這樣玩的話,要了解有些時候 compiler 做一些神妙的
09/30 11:42, 2F

09/30 11:42, , 3F
最佳化,人類並不容易看懂... 今天這個算最簡單的了...
09/30 11:42, 3F
了解 謝謝 :) ※ 編輯: shi359 (140.114.77.186), 09/30/2017 11:46:44

09/30 11:57, , 4F
可以參考csapp 第三章了解一些簡單情況下,組語更動執行順
09/30 11:57, 4F

09/30 11:57, , 5F
序的行為
09/30 11:57, 5F

09/30 15:39, , 6F
開個最佳化應該會變得很有趣
09/30 15:39, 6F

09/30 22:22, , 7F
最佳化開了就什麼都沒有了吧xd
09/30 22:22, 7F
文章代碼(AID): #1Ppn3rir (C_and_CPP)
文章代碼(AID): #1Ppn3rir (C_and_CPP)