我正在对单周期 MIPS 处理器进行分配,我对 addiu 指令有点困惑。
在这个网站上,作为我的参考,作者声明立即将被延长。
Description:
Adds a register and a sign-extended immediate value and stores the result
in a register
Operation:
$t = $s + imm; advance_pc (4);
Syntax:
addiu $t, $s, imm
Encoding:
0010 01ss ssst tttt iiii iiii iiii iiii
如果我有以下说明
lui $3,0x1001
addiu $3,$3,0x8010
我创建了我的数据路径,该路径扩展了我会得到的 addiu
$3 := 0x1001_0000
$3 := 0x1001_0000 + 0x1111_8010 = 0x1000_8010
但根据 PCSpim 是不正确的,我应该得到
$3 := 0x1001_8010
我很困惑为什么我需要签署extend addiu,据我所知,如果我做类似的addiu $1, $1, -10
事情应该被视为addiu $1, $1, 10
因为它是未签名的。
那么为什么它说我应该对立即值进行符号扩展呢?