【问题标题】:addiu instruction encoding (MIPS,GCC)addiu 指令编码 (MIPS,GCC)
【发布时间】:2017-08-29 14:22:21
【问题描述】:

这里是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)

【问题讨论】:

  • 不确定那是什么类型的 mips? 16 位?
  • 我正在使用 mips 32bit
  • 那肯定不是 32 位的……该指令的 mips32 机器码是 27 BD FE E8FE E8-280
  • 对不起,我忘了说它是一条 microMIPS 指令,使用 GCC 选项 -mmicromips 编译

标签: gcc assembly mips


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多