有人可以向我解釋下面發生了什麼? 問題:學習一個簡單的代碼反彙編輸出和內存映射
- 爲什麼不變我留在一個註冊?
- 爲什麼寄存器rbp包含內存緩存行的地址而不是i的地址(即4個字節)?
- 這是什麼意思?
movl $0x5,-0x4(%rbp)
;%
和negative 0x4
是什麼意思?
int main(int argc, char* argv[])
{
int i = 5; // line 25
i ++; // line 26
}
-----------------------------------------------------
Disassembly:
25 int i = 5;
00000000004014f4: movl $0x5,-0x4(%rbp)
26 i ++;
00000000004014fb: addl $0x1,-0x4(%rbp)
-----------------------------------------------------
Register Values:
rbp: 0x23fe60
-----------------------------------------------------
Memory map at line 25:
Address | 0-3 | 4-7 | 8-B | C-F |
0x23fe60 |00000000|00000000|00000000|05000000|
Memory map at line 26:
Address | 0-3 | 4-7 | 8-B | C-F |
0x23fe60 |00000000|00000000|00000000|06000000|
注:是Eclipse生成上述內容,我使用的是64位計算機上mingw的編譯。
你是什麼意思現金?緩存? – ordahan 2014-10-04 15:41:57
緩存不是單獨尋址的。所以我不確定你對緩存的問題意味着什麼。 – 2014-10-04 15:42:26
我的意思是,我將5分配給了我。不應該5在緩存中,而不是映射到內存? – Kam 2014-10-04 15:43:07