PUSH eax和mov [esp],eax之间的区别?

时间:2013-09-06 14:27:32

标签: assembly

两行之间有什么区别

push eax

mov [esp], eax

不会将eax推入堆栈(esp指向mov [esp],eax会这样做吗?)

1 个答案:

答案 0 :(得分:12)

“push”会自动碰到“esp”(你的堆栈指针)的值。 “mov”不会。所以如果你想用push将多个项目放在堆栈上,你只需:

push eax
push ebx
...

使用mov,要获得相同的结果,您需要:

sub  esp,4
mov  [esp], eax
sub  esp,4
mov  [esp], ebx
...

关于push的好处是有反向操作,pop允许你以相反的顺序撤回事物。当然,这就是堆栈的全部内容。 :)