addiu指令编码(MIPS,GCC)

时间:2017-08-29 14:22:21

标签: gcc assembly mips

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

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

我的目的是检测所有此类指令(addiu sp,sp,) 然后解码立即数,在上面的情况下(-280)(跟随sp)。 我不明白的是(-280)的编码。 已链接至:How to get a call stack backtrace?(GCC,MIPS,no frame pointer)

1 个答案:

答案 0 :(得分:1)

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

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