我看到代码,push ecx
但我不知道它的用途。它是否将 ecx 的值更改为其他值?
问问题
8394 次
1 回答
14
它将 的值压ecx
入堆栈。 ecx
是一个 x86 CPU 寄存器,它可以保存一定数量的位值(rcx
现代 x86 CPU 上的 32 或 64(当时称为))。
调用栈被分成栈帧。调用函数时会创建堆栈帧,将传递给函数的参数压入堆栈,然后执行函数。当函数运行时,局部函数变量也通过使用push
和存储在堆栈中pop
。 push
把东西放在堆栈上,然后pop
把最后放在上面的东西拿走,退后。
你必须把堆栈想象成一堆盘子,你把一个放在上面,(推)然后你再把同样的一个拿下来(弹出),然后你才能到达下面的下一个。
导致函数当前运行的函数都在这个堆栈上,如果你愿意,可以坐在当前函数堆栈框架的“下方”。当当前函数返回时,它会从堆栈中弹出(堆栈帧被破坏)并且调用者函数可以从它离开的地方继续。
为了这个解释,我已经简化了一些位。
于 2012-09-13T22:07:37.890 回答