【发布时间】:2013-02-02 23:03:39
【问题描述】:
我正在阅读 MIPS 手册: “请注意,我们使用“添加立即数”指令的“无符号”版本,因为我们正在处理一个地址,它是一个无符号二进制数。我们不想仅仅因为计算的地址越过中间值而产生异常-内存空间的点。”
这到底是什么意思?特别是跨越内存空间的中点。
而且,在下面的代码中,我不明白为什么它会从 8($sp) 跳到 20($sp)。代码稍后从 12($sp) 和 16($sp) 加载,但是何时对这些内存部分进行处理。我在 jal JILL 中认为可能,但没有给出太多解释。
addiu $sp, $sp, -24
sw $t1, 0($sp)
sw $t2, 4($sp)
sw $t3, 8($sp)
sw $ra, 20($sp)
jal JILL
lw $ra, 20($sp)
lw $t4, 12($sp)
lw $t5, 16($sp)
addiu $sp, $sp, 24
【问题讨论】:
-
这不是“无符号加法”,它是带有“无符号溢出异常”的加法。加法运算本身不知道位的解释。