2014-10-04 31 views
1

希望我問的是有道理的。我在某些彙編代碼上運行gdb調試器。我碰到一條線,有非常簡單的彙編寄存器比較

cmp %eax, (%ebx) 

現在,比較這兩個寄存器有什麼區別,因爲有一個括號括起來嗎?我所寫的這本書並沒有做出很好的解釋。

+1

你在用什麼書? – 2014-10-04 19:16:20

+5

獲得一本新書。 – 2014-10-04 19:16:47

回答

3

帶圓括號的那個表示寄存器%ebx指向的存儲器地址中的值。沒有括號的那個意味着寄存器本身的值。

+0

謝謝!開門見山。 – user2789945 2014-10-04 19:30:16

2

針對特定指令集的彙編語言有許多風格,通常語法不同。你沒有告訴我們哪個彙編程序,所以我們不得不猜測。

我的猜測是

(<reg>) 

是指「使用寄存器作爲一個指針到內存中的第二操作數。」應該有其他的變體對應於可能是x86指令集(再次,你沒有告訴我們)允許偏移量和base + offset索引,因爲這些是x86的常見尋址模式。

+0

對不起,我應該指定。它在x86中。感謝您的及時和簡潔的迴應! – user2789945 2014-10-04 19:30:00