这是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)
答案 0 :(得分:1)
microMips有一个专门的ADDIUSP
指令,汇编器选择使用它。前6位是操作码010011
,接下来的9位是编码的立即数110111010 = 0x1BA
,LSB是在1
保留的。
立即使用的编码按比例缩放4和符号扩展名。鉴于0x1BA = -70
(使用9位),值为-70 * 4 = -280
。