局部变量的存储

寄存器和内存都可以用来存放函数执行时所需的数据。寄存器的存取速度比内存快很多,所以通常会优先把数据存入寄存器中。但是由于寄存器数量有限,因此当寄存器不够用时会将数据存放在内存中。

我们可以把栈指针(sp)向栈顶移动来为函数在栈中分配用于存放局部数据的内存空间。

例如有如下C语言代码:

void main() {
    long foo = 100;
    long bar = 200;
}

代码中定义了两个long类型变量foobar,我们假设它们都放在中,由于long类型占用8个字节,因此我们需要在栈中分配16个字节的空间。

分配过程(一个单元格8个字节):

最后再把这两个变量分别存入栈中:

results matching ""

    No results matching ""