[討論] 關於 C 語言與組合語言編譯問題

作者: gowrite (gowrite)   2017-11-26 03:59:53
各位好 新手自學
我想問一個問題
常常聽人家說,組合語言的運作效率比 C 語言好,因為組合語言比較接近 binary code
這個我有點不太懂
因為 C 語言在編譯的過程中
從 "預處理 C 語言" > "轉為組合語言" > "轉為 binary code"
我不會組合語言,不知道組合語言實際編譯的過程,
所以假設組合語言編譯的過程中,
就是 "從組合語言" > "轉為 binary code"
那 C 語言也是會被編譯成組合語言,再進一步被編譯成 binary code
最後兩者都是 binary code
那何來的 組合語言 比 C語言 快說法呢??
大家可以解惑嗎?
謝謝
作者: grayStone (灰色石頭)   2017-11-26 04:04:00
現在compiler寫的組合語言應該比自己寫強很多了
作者: Ommm5566 (56天團)   2017-11-26 07:29:00
現在編譯器優化理論很成熟 去看llvm
作者: CoNsTaR ((const *))   2017-11-26 08:31:00
那直接寫 binary code 執行效率是不是也比 asm 還高 XDD
作者: supertitler (新的開始)   2017-11-26 09:05:00
除了虛擬指令 asm跟machine code不就是1:1的關係嗎0.0?
作者: chuegou (chuegou)   2017-11-26 11:01:00
因為組語你在寫的時候你自己會針對資料相依性優化但編譯器不一定知道你的資料相依性
作者: galic (嘎利)   2017-11-26 11:36:00
去問那個這樣講的人阿
作者: Bencrie   2017-11-26 11:53:00
動詞用「組譯」,assembler 組譯器
作者: alan23273850   2017-11-26 13:55:00
這個說法只適用於以前,編譯器優化不佳的年代
作者: jaid (jaid)   2017-11-26 14:46:00
越底層能控制的越細,能榨出來的效能越多,前提是你有本事
作者: s0914714 (YA)   2017-11-26 18:46:00
如果很熟底層硬體特性可以阿 不然就乖乖寫C吧而且現在編譯器大部分都幫你優化了
作者: kokal (細菌)   2017-11-26 22:20:00
有些code的optimization被證明是NPC (from wiki),因此存在optimal solution 較快

Links booklink

Contact Us: admin [ a t ] ucptt.com