两条线有什么区别

push eax

mov [esp], eax

不会将eax插入堆栈(esp指向的位置与mov [esp]一样,而eax指向吗?)

最佳答案

“push”将自动增加“esp”(您的堆栈指针)的值。 “mov”不会。因此,如果您想使用push将多个项目放到堆栈中,则只需执行以下操作:

push eax
push ebx
...

使用mov,要获得相同的结果,您将需要:
sub  esp,4
mov  [esp], eax
sub  esp,4
mov  [esp], ebx
...

关于push的好处是,存在反向操作,pop允许您以相反的顺序撤回操作。当然,这就是堆栈的全部含义。 :)

关于assembly - PUSH eax和mov [esp],eax之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18660148/

10-12 04:59