看板 C_and_CPP 關於我們 聯絡資訊
網址:https://blog.regehr.org/archives/28 問題:https://imgur.com/a/lPFBB 想請問,4(%esp), %eax $3, %eax這兩行是哪個指令集的組語。 另外abstract machine是什麼意思?指的是還沒經過編譯器編譯的high-level程式碼嗎?(因 為不同的編譯器可以編譯成好幾種不一樣的組合語言),所以只能用抽象的概念去形容這段 程式碼的功能。 如我小弟的理解有錯,歡迎大力的鞭>///< -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.26.157 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1505976346.A.871.html
LPH66: AT&T 語法的 x86 組語 09/21 15:01
johnjohnlin: x86? 09/21 15:01
LPH66: 寫回 Intel 語法是 mov eax, [esp+4]; add eax, 3 09/21 15:02
LPH66: www.imada.sdu.dk/Courses/DM18/Litteratur/IntelnATT.htm 09/21 15:02
LPH66: 抽象機器的概念是這樣的: 我們規定一段程式碼在抽象機器上 09/21 15:07
LPH66: 的運作方式, 然後觀察這樣運作之後它所產生的結果 09/21 15:07
LPH66: (這不只代表輸出, 還包含部份附帶效應) 09/21 15:08
LPH66: 那實際上的編譯器在編譯時就需要對同樣這段程式碼 09/21 15:08
LPH66: 產生能得到同樣結果的機械碼出來 09/21 15:09
LPH66: 以你貼的圖來說, 呼叫這個函數的結果是回傳了 x+3 的值 09/21 15:10
LPH66: 那編譯器可以直接產生回傳 x+3 的指令 (即是下面的組語) 09/21 15:10
LPH66: 簡單說就是: 結果對就好, 過程不論; 這就給最佳化提供空間 09/21 15:11
感恩,精闢 ※ 編輯: zzss2003 (60.248.26.157), 09/21/2017 16:30:04
VictorTom: 推:) 09/22 00:52