我正在使用gdb拆解c中的程序,而at& t程序集显示以下内容。
sub (%eax),%edx
mov %edx,(%eax)
add $0x4,%eax
我不确定减法在这里是如何工作的。正如我所解释的那样,%edx中的值将从中减去%eax的内存位置。 A.k.a%edx =%edx - (%eax)。在此之后打印寄存器值时得到的值很奇怪,我不确定它到底在做什么。任何正确方向的点都将受到赞赏。
答案 0 :(得分:4)
eax被用作指向4字节整数的指针(可以是无符号的)。 c等价物是:
edx -= *eax;
*eax = edx;
eax++;