请教一下,赋值运算在内存中是如何实现的?

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:34:37

一般变量之间是不能直接赋值,所以要通过寄存器来中转。
一条
a = b;语句一般对应的是

mov eax,dword ptr [ebp-8]
mov dword ptr [ebp-4],eax
说明:

ptr[ebp-8]是一个内存地址,对应的是变量b;
ptr[ebp-4]对应变量a,依据实际环境,[]里面的内容也许会不一样。

学过汇编吗?

如果是常数赋值:mov ax, 2 //就是把一个常数放到一个寄存器里
如果是变量赋值:mov ax, bx //把一个寄存器的值放到另一个寄存器里

在内存中,每一个变量都有其唯一的内存地址,在赋值运算的时候,将值写到变量所在的内存地址里。