0
当堆栈指针移回原来的位置时,会发生什么情况,但保存在堆栈中的值没有从内存加载到寄存器文件中?即当堆栈指针移回时,值仍然存在于堆栈内存中。堆栈指针移回,但值没有加载到注册文件?
当堆栈指针移回原来的位置时,会发生什么情况,但保存在堆栈中的值没有从内存加载到寄存器文件中?即当堆栈指针移回时,值仍然存在于堆栈内存中。堆栈指针移回,但值没有加载到注册文件?
堆栈指针($ sp)正如名称暗示的指针,指向一个地址。
比方说,这是我们的记忆,并在beggining $ SP持有ADRESS “0x..01”
... | 0x..01 | 0x..02 | 0x..03 | ...
sw $a0,0($sp)
#存储在$ SP ADRESS的第一偏移的$ A0的值 (这是0x..01在这个例子中)
addi $sp,$sp,4
#$移动藻
现在让我们看看我们有什么。 $ sp不再指向0x..01,因为我们已经在第二行中更改了它,但$ a0的值仍然存储在0x..01。如果我们在此之后编写另一个sw命令,新值将被存储在$ sp的新地址中。
总结: $ sp拥有当前单元的地址。当您更改$ sp时,您只能更改$ sp指出的位置。
什么也没有发生,完全符合你描述的要求。通过向一个方向移动堆栈指针,可以在堆栈上分配内存,然后通过向相反方向移动堆栈指针释放内存。 – Michael