作者shi359 (歸人還是過客)
看板C_and_CPP
標題[問題] C 轉成 assembly 時 switch 的問題
時間Sat Sep 30 11:35:07 2017
不確定跟 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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1506742517.A.B35.html
※ 編輯: shi359 (140.114.77.186), 09/30/2017 11:36:56
1F:→ Schottky: test eax, eax 就是判斷 eax 是不是 0 了 09/30 11:40
2F:→ Schottky: 你要這樣玩的話,要了解有些時候 compiler 做一些神妙的 09/30 11:42
3F:→ Schottky: 最佳化,人類並不容易看懂... 今天這個算最簡單的了... 09/30 11:42
了解 謝謝 :)
※ 編輯: shi359 (140.114.77.186), 09/30/2017 11:46:44
4F:推 dmeiki: 可以參考csapp 第三章了解一些簡單情況下,組語更動執行順 09/30 11:57
5F:→ dmeiki: 序的行為 09/30 11:57
6F:推 james732: 開個最佳化應該會變得很有趣 09/30 15:39
7F:→ PkmX: 最佳化開了就什麼都沒有了吧xd 09/30 22:22