作者zzss2003 (brotherD)
看板C_and_CPP
標題[問題] 請問這行組語是哪個指令集?
時間Thu Sep 21 14:45:44 2017
網址:
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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1505976346.A.871.html
1F:推 LPH66: AT&T 語法的 x86 組語 09/21 15:01
2F:推 johnjohnlin: x86? 09/21 15:01
3F:→ LPH66: 寫回 Intel 語法是 mov eax, [esp+4]; add eax, 3 09/21 15:02
4F:→ LPH66: www.imada.sdu.dk/Courses/DM18/Litteratur/IntelnATT.htm 09/21 15:02
6F:推 LPH66: 抽象機器的概念是這樣的: 我們規定一段程式碼在抽象機器上 09/21 15:07
7F:→ LPH66: 的運作方式, 然後觀察這樣運作之後它所產生的結果 09/21 15:07
8F:→ LPH66: (這不只代表輸出, 還包含部份附帶效應) 09/21 15:08
9F:→ LPH66: 那實際上的編譯器在編譯時就需要對同樣這段程式碼 09/21 15:08
10F:→ LPH66: 產生能得到同樣結果的機械碼出來 09/21 15:09
11F:→ LPH66: 以你貼的圖來說, 呼叫這個函數的結果是回傳了 x+3 的值 09/21 15:10
12F:→ LPH66: 那編譯器可以直接產生回傳 x+3 的指令 (即是下面的組語) 09/21 15:10
13F:→ LPH66: 簡單說就是: 結果對就好, 過程不論; 這就給最佳化提供空間 09/21 15:11
感恩,精闢
※ 編輯: zzss2003 (60.248.26.157), 09/21/2017 16:30:04
14F:推 VictorTom: 推:) 09/22 00:52