我正在使用gdb反汇编c中的一个程序,at&t程序集显示了以下内容。
sub (%eax),%edx
mov %edx,(%eax)
add $0x4,%eax
我不太确定这里的减法是如何工作的。在我解释它时,%edx中的值将减去%eax的内存位置。又称%edx = %edx - (%eax)。在这种情况下打印寄存器值时,我得到的值很奇怪,我不确定它到底在做什么。任何指向正确方向的观点都将不胜感激。
发布于 2014-05-05 01:09:23
eax正被用作指向4字节整数的指针(可以是无符号的)。C语言的等价物是:
edx -= *eax;
*eax = edx;
eax++;
https://stackoverflow.com/questions/23458928
复制相似问题