作者gowrite (gowrite)
看板C_and_CPP
標題[討論] 關於 C 語言與組合語言編譯問題
時間Sun Nov 26 03:59:53 2017
我想問一個問題
常常聽人家說,組合語言的運作效率比 C 語言好,因為組合語言比較接近 binary code
這個我有點不太懂
因為 C 語言在編譯的過程中
從 "預處理 C 語言" > "轉為組合語言" > "轉為 binary code"
我不會組合語言,不知道組合語言實際編譯的過程,
所以假設組合語言編譯的過程中,
就是 "從組合語言" > "轉為 binary code"
那 C 語言也是會被編譯成組合語言,再進一步被編譯成 binary code
最後兩者都是 binary code
那何來的 組合語言 比 C語言 快說法呢??
大家可以解惑嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.54.122
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1511639995.A.447.html
1F:→ grayStone: 現在compiler寫的組合語言應該比自己寫強很多了 11/26 04:04
所以所謂的組合語言的執行效率比 C 語言快的原因是,比較可能是出現在
人寫的組合語言會比編譯器轉換的組合語言,簡潔有效率,這個部分嗎?
※ 編輯: gowrite (123.195.54.122), 11/26/2017 04:31:15
2F:→ Ommm5566: 現在編譯器優化理論很成熟 去看llvm 11/26 07:29
3F:推 CoNsTaR: 那直接寫 binary code 執行效率是不是也比 asm 還高 XDD 11/26 08:31
4F:→ supertitler: 除了虛擬指令 asm跟machine code不就是1:1的關係嗎0 11/26 09:05
5F:→ supertitler: .0? 11/26 09:05
6F:→ chuegou: 因為組語你在寫的時候你自己會針對資料相依性優化 11/26 11:01
7F:→ chuegou: 但編譯器不一定知道你的資料相依性 11/26 11:01
8F:→ galic: 去問那個這樣講的人阿 11/26 11:36
9F:推 Bencrie: 動詞用「組譯」,assembler 組譯器 11/26 11:53
10F:推 alan23273850: 這個說法只適用於以前,編譯器優化不佳的年代 11/26 13:55
11F:推 jaid: 越底層能控制的越細,能榨出來的效能越多,前提是你有本事 11/26 14:46
12F:推 s0914714: 如果很熟底層硬體特性可以阿 不然就乖乖寫C吧 11/26 18:46
13F:→ s0914714: 而且現在編譯器大部分都幫你優化了 11/26 18:47
14F:推 kokal: 有些code的optimization被證明是NPC (from wiki),因此存在 11/26 22:20
15F:→ kokal: optimal solution 較快 11/26 22:22
※ 編輯: gowrite (180.177.9.125), 05/23/2018 08:43:40