2014-05-04 67 views
0

我正在使用gdb在c中拆卸程序,並在& t程序集顯示以下內容。att彙編操作[sub(%eax),edx]實際上做了什麼?

sub (%eax),%edx 
mov %edx,(%eax) 
add $0x4,%eax 

我不確定減法在這裏是如何工作的。按照我的理解,%edx中的值將從其中減去%eax的內存位置。 A.k.a%edx =%edx - (%eax)。在這之後打印寄存器值時得到的值很奇怪,我不確定它到底在做什麼。任何正確的方向點將不勝感激。

回答

4

eax被用作指向4字節整數的指針(可以是無符號的)。 c相當於:

edx -= *eax; 
*eax = edx; 
eax++; 
相關問題