【问题标题】:A question about the value of $sp register in MIPS关于MIPS中$sp寄存器值的问题
【发布时间】:2019-05-08 12:58:20
【问题描述】:

问题围绕着 MIPS 程序集。

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

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

现在 $sp 的价值是多少?

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

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

【问题讨论】:

  • 它以字节为单位,所以0xff4。您可以在调试器/模拟器中轻松检查这一点。从技术上讲,$sp 只是另一个通用寄存器(毕竟是$29),所以没什么特别的。如果你写add -12,那将会发生。
  • 谢谢!在考虑它只是另一个寄存器之后,它看起来确实很明显

标签: assembly architecture hex mips cpu-registers


【解决方案1】:

addi $sp, $sp, -12 实际上与 addi $t0, $t0, -12 没有什么不同——你是在寄存器的值上加上 -12

所以如果$sp = 0x1000,那么值就是0x1000 - 12 = 0xFF4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2017-10-29
    相关资源
    最近更新 更多