【发布时间】:2019-10-15 23:27:51
【问题描述】:
我目前正在学习 MIPS,希望了解有关存储/加载字的一些说明。
是:
sw $t0, 4($s0)
和
一样addi $s0, $s0, 4 # offsets are in bytes/word 8*4*4
sw $t0, 0($s0)
此外,我知道偏移量是 16 位有符号立即数。但是,如果它比 32 位立即数更大呢?
例子
sw $t0, x($s0) # x is a 32bits offset
【问题讨论】:
-
(1) 我不明白你为什么将 4 转换为 512。(2) 处理器不支持大于 16 位的立即偏移量,所以你必须想出一些其他的方式,可能是通过使用多个指令。
-
与未修改寄存器的 4($s0) 不完全相同,它只是基址 + 偏移量的基址。至于要寻址的内存位置,是的,它们是相同的。偏移量的大小是有限的,请参阅指令定义,它不能远程 32 位可能是 16 或更少,但我必须检查。如果指令集具有寄存器基址 + 寄存器偏移寻址模式,那么您将这样做,否则您必须修改寄存器或使用第二个寄存器(或第三个,取决于偏移量)。
-
你在问这个问题之前确实模拟了这些,是吗?关于您的问题,模拟器显示了什么?
标签: assembly mips mips32 mars-simulator mips64