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