当堆栈指针移回其原始位置但保存在堆栈中的值没有从内存加载回寄存器文件时会发生什么?即当堆栈指针移回时,值仍然存在于堆栈内存中。
问问题
64 次
1 回答
0
堆栈指针($sp)顾名思义就是一个指针,指向一个地址。
假设这是我们的记忆,在开始的 $sp 中包含地址“0x..01”
... | 0x..01 | 0x..02 | 0x..03 | ...
sw $a0,0($sp)
# 将$a0 的值存储在$sp 地址的第一个偏移量处
(在本例中为 0x..01)
addi $sp,$sp,4
# 移动 $sp
现在让我们看看我们有什么。$sp 不再指向 0x..01,因为我们在第二行更改了它,但 $a0 的值仍然存储在 0x..01。如果我们在这之后再写一个 sw 命令,新的值将被存储在 $sp 的新地址中。
总结一下: $sp 保存当前单元格的地址。当您更改 $sp 时,您只会更改 $sp 指出的位置。
于 2017-05-07T15:50:51.353 回答