att汇编操作[sub(%eax),edx]实际上做了什么?

时间:2014-05-04 16:54:59

标签: assembly gdb att

我正在使用gdb拆解c中的程序,而at& t程序集显示以下内容。

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

我不确定减法在这里是如何工作的。正如我所解释的那样,%edx中的值将从中减去%eax的内存位置。 A.k.a%edx =%edx - (%eax)。在此之后打印寄存器值时得到的值很奇怪,我不确定它到底在做什么。任何正确方向的点都将受到赞赏。

1 个答案:

答案 0 :(得分:4)

eax被用作指向4字节整数的指针(可以是无符号的)。 c等价物是:

edx -= *eax;
*eax = edx;
eax++;