Stack 堆栈指针向后移动,但值未加载到寄存器文件?

Stack 堆栈指针向后移动,但值未加载到寄存器文件?,stack,mips,cpu,cpu-registers,stack-pointer,Stack,Mips,Cpu,Cpu Registers,Stack Pointer,当堆栈指针移回其原始位置,但堆栈中保存的值未从内存加载回寄存器文件时,会发生什么情况?当堆栈指针向后移动时,ie值仍存在于堆栈内存中。堆栈指针($sp)顾名思义是指针,指向一个地址 假设这是我们的内存,$sp中保存着地址“0x..01” …|0x..01 | 0x..02 | 0x..03 | sw$a0,0($sp)#将$a0的值存储在$sp address的第一个偏移处 (在本例中为0x..01) addi$sp,$sp,4#移动$sp 现在让我们看看我们有什么$sp不再指向0x..01,因

当堆栈指针移回其原始位置,但堆栈中保存的值未从内存加载回寄存器文件时,会发生什么情况?当堆栈指针向后移动时,ie值仍存在于堆栈内存中。

堆栈指针($sp)顾名思义是指针,指向一个地址

假设这是我们的内存,$sp中保存着地址“0x..01”

…|0x..01 | 0x..02 | 0x..03 |

sw$a0,0($sp)
#将$a0的值存储在$sp address的第一个偏移处 (在本例中为0x..01)

addi$sp,$sp,4
#移动$sp

现在让我们看看我们有什么$sp不再指向0x..01,因为我们在第二行中更改了它,但$a0的值仍然存储在0x..01。如果在此之后再编写一个sw命令,新值将存储在$sp的新地址中


总而言之:$sp保留当前单元格的地址。当您更改$sp时,您只更改$sp指出的位置。

什么也没有发生,您所描述的操作完全正确。通过向一个方向移动堆栈指针来分配堆栈上的内存,然后通过向相反方向移动堆栈指针来释放内存。