作者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/cn.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