关于MIPS中$sp寄存器取值的问题

A question about the value of $sp register in MIPS

问题围绕 MIPS 程序集展开。

假设在程序开始时寄存器 $sp(堆栈指针)的值是 $sp = 0x1000。

然后我写命令:addi $sp, $sp, -12

$sp 现在的价值是多少?

会是0xFF4吗? (因为十六进制的12是C,我们用1000减去它)

或者我需要将 12 乘以 4(因为 4 字节是字的大小 = 32 位)然后减去?

addi $sp, $sp, -12 实际上与 addi $t0, $t0, -12 没有什么不同——您将 -12 添加到寄存器的值中

所以如果 $sp = 0x1000,则值为 0x1000 - 12 = 0xFF4