5

What is the difference between the two lines

push eax

mov [esp], eax

Doesn't push eax on to the stack (where esp is pointing to just as mov [esp], eax does?)

4

1 に答える 1

14

「プッシュ」は、「esp」(スタック ポインター) の値を自動的に増やします。「mov」はしません。したがって、スタックに複数のアイテムを置きたい場合はpush、次のようにします。

push eax
push ebx
...

を使用movすると、同じ結果を得るには、次のようになります。

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

そして、良い点pushは、逆の操作があることです。popこれにより、逆の順序で元に戻すことができます。もちろん、これがスタックのすべてです。:)

于 2013-09-06T14:30:43.017 に答える