0

我正在对单周期 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因为它是未签名的。

那么为什么它说我应该对立即值进行符号扩展呢?

4

1 回答 1

1

spim中,:

addiu    $3,$3,0x8010

是一个伪操作,并且被认为是对无符号加法的渴望[由于0x]addiu 指令无法执行 [因为符号扩展]。

因此,spim生成:

ori    $1,$0,0x8010
addu   $3,$3,$1

mars中,顺序为:

lui    $1,0
ori    $1,$1,0x8010
addu   $3,$3,$1
于 2016-07-19T07:23:07.247 回答