有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 皋陶 于 2020-8-25 18:04 编辑
反汇编时添加 -M no-aliases,numeric选项,输出原始指令和寄存器编号。
mingdu.zheng at gmail dot com
调用objdump反汇编,默认情况下,会将指令反汇编成伪指令或指令别名,会将寄存器反汇编成ABI寄存器名。用默认参数反汇编结果如下:
- $ riscv64-unknown-elf-objdump -d hello.o
- 00000000 <main>:
- 0: 00000537 lui a0,0x0
- 4: 1141 addi sp,sp,-16
- 6: 00050513 mv a0,a0
- a: c606 sw ra,12(sp)
- c: 00000097 auipc ra,0x0
- 10: 000080e7 jalr ra
- 14: 40b2 lw ra,12(sp)
- 16: 4501 li a0,0
- 18: 0141 addi sp,sp,16
- 1a: 8082 ret
复制代码
上面的输出不区分普通指令(32位指令)和压缩指令(16位指令),还有像ret这样的伪指令,寄存器名称是a0、sp、ra等ABI名称。 添加 -M no-aliases,numeric选项后反汇编结果如下:
- $ riscv64-unknown-elf-objdump -d hello.o -M no-aliases,numeric
- 00000000 <main>:
- 0: 00000537 lui x10,0x0
- 4: 1141 c.addi x2,-16
- 6: 00050513 addi x10,x10,0 # 0 <main>
- a: c606 c.swsp x1,12(x2)
- c: 00000097 auipc x1,0x0
- 10: 000080e7 jalr x1,0(x1) # c <main+0xc>
- 14: 40b2 c.lwsp x1,12(x2)
- 16: 4501 c.li x10,0
- 18: 0141 c.addi x2,16
- 1a: 8082 c.jr x1
复制代码
no-aliases选项要求输出原始指令,即指令集架构文档中的指令名称;numeric选项要求输出寄存器编号。
添加附加选项后,明确区分普通指令和压缩指令(c.打头),寄存器名全部是x1、x2、x10了。 本篇完,感谢关注:RISC-V单片机中文网 |