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

看板C_and_CPP (C/C++)作者 (gowrite)時間8年前 (2017/11/26 03:59), 7年前編輯推噓6(609)
留言15則, 11人參與, 8年前最新討論串1/1
我想問一個問題 常常聽人家說,組合語言的運作效率比 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

11/26 04:04, 8年前 , 1F
現在compiler寫的組合語言應該比自己寫強很多了
11/26 04:04, 1F
所以所謂的組合語言的執行效率比 C 語言快的原因是,比較可能是出現在 人寫的組合語言會比編譯器轉換的組合語言,簡潔有效率,這個部分嗎? ※ 編輯: gowrite (123.195.54.122), 11/26/2017 04:31:15

11/26 07:29, 8年前 , 2F
現在編譯器優化理論很成熟 去看llvm
11/26 07:29, 2F

11/26 08:31, 8年前 , 3F
那直接寫 binary code 執行效率是不是也比 asm 還高 XDD
11/26 08:31, 3F

11/26 09:05, 8年前 , 4F
除了虛擬指令 asm跟machine code不就是1:1的關係嗎0
11/26 09:05, 4F

11/26 09:05, 8年前 , 5F
.0?
11/26 09:05, 5F

11/26 11:01, 8年前 , 6F
因為組語你在寫的時候你自己會針對資料相依性優化
11/26 11:01, 6F

11/26 11:01, 8年前 , 7F
但編譯器不一定知道你的資料相依性
11/26 11:01, 7F

11/26 11:36, 8年前 , 8F
去問那個這樣講的人阿
11/26 11:36, 8F

11/26 11:53, 8年前 , 9F
動詞用「組譯」,assembler 組譯器
11/26 11:53, 9F

11/26 13:55, 8年前 , 10F
這個說法只適用於以前,編譯器優化不佳的年代
11/26 13:55, 10F

11/26 14:46, 8年前 , 11F
越底層能控制的越細,能榨出來的效能越多,前提是你有本事
11/26 14:46, 11F

11/26 18:46, 8年前 , 12F
如果很熟底層硬體特性可以阿 不然就乖乖寫C吧
11/26 18:46, 12F

11/26 18:47, 8年前 , 13F
而且現在編譯器大部分都幫你優化了
11/26 18:47, 13F

11/26 22:20, 8年前 , 14F
有些code的optimization被證明是NPC (from wiki),因此存在
11/26 22:20, 14F

11/26 22:22, 8年前 , 15F
optimal solution 較快
11/26 22:22, 15F
※ 編輯: gowrite (180.177.9.125), 05/23/2018 08:43:40
文章代碼(AID): #1Q6SkxH7 (C_and_CPP)
文章代碼(AID): #1Q6SkxH7 (C_and_CPP)