推动ecx做什么?

时间:2012-09-13 22:01:13

标签: assembly nasm

我看到push ecx的代码,我不知道它的用途。它是否会将ecx的值更改为其他内容?

1 个答案:

答案 0 :(得分:14)

它在堆栈上推送ecx的值。 ecx是一个x86 CPU寄存器,可以在现代x86 CPU上保存一定数量的位(32或64(当前称为rcx))。

调用堆栈分为堆栈帧。调用函数时会创建堆栈帧,将参数推送到传递给函数的堆栈上,然后执行该函数。在函数运行时,使用pushpop将本地函数变量存储在堆栈中。 push内容放入堆栈,而pop 将最后一个放在其上的内容放回

你必须想象堆栈就像一堆盘子,你把它放在上面,(推)然后你再拿掉那个(pop),然后你就可以到达下面的下一个。

导致当前正在运行的函数的函数都在这个堆栈上,如果你愿意,可以坐在“下面”,当前函数堆栈框架。当前函数返回时,它会从堆栈弹出(堆栈帧被破坏),调用函数可以从中断处继续。

为了便于解释,我简化了一些比特。