addiu 指令编码(MIPS,GCC)

addiu instruction encoding (MIPS,GCC)

这里是 addiu 指令操作码(16 位指令,GCC 选项 -mmicromips):

 full instruction: addiu sp,sp,-280
 opcode, hexa:     4F75         
 opcode, binary:   1001(instruction) 11101(sp is ) 110101

我的目的是检测所有此类指令(addiu sp,sp,) 然后解码立即数,在上述情况下 (-280)(跟随 sp)。 我不明白的是(-280)的编码。 链接到:

microMips 有一个专门的 ADDIUSP 汇编器选择使用的指令。前 6 位是操作码 010011,接下来的 9 位是编码立即数 110111010 = 0x1BA,LSB 保留在 1.

立即数的编码使用 4 倍缩放和符号扩展。鉴于 0x1BA = -70(使用 9 位),该值为 -70 * 4 = -280.