You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用objdump生成GAS兼容的汇编代码?

处理32位MIPS-III ELF文件的objdump输出格式化

要得到你期望的精简格式(仅保留标签和GAS可解析的指令),可以通过objdump参数配置结合文本过滤来实现:

1. 让objdump输出GAS兼容的指令别名

MIPS的clear是padduw $reg, $zero, $zero的汇编别名,需要指定GAS语法让objdump识别并输出这个别名,同时明确32位MIPS架构:

objdump -d -m mips:32 -M gas your_elf_file.elf

参数说明:

  • -d:仅反汇编代码段(.text)
  • -m mips:32:指定目标为32位MIPS-III架构
  • -M gas:启用GAS风格的指令输出,会将padduw替换为GAS可解析的clear别名

2. 过滤冗余内容

用awk过滤掉地址、十六进制机器码和无关头部内容,只保留entry:标签及后续的指令行:

objdump -d -m mips:32 -M gas your_elf_file.elf | awk '
/^entry:/ { print; flag=1; next }
flag && /^[[:space:]]/ {
    sub(/^[[:space:]]+[0-9a-f]+:[[:space:]]+[0-9a-f]+[[:space:]]+/, "")
    print
}
/^[^[:space:]]/ && !/^entry:/ { flag=0 }
'

这段awk脚本的逻辑:

  • 匹配到entry:时,打印该行并开启处理标记
  • 标记开启后,处理所有以空格开头的行:移除开头的地址、十六进制码部分,只保留指令和寄存器
  • 遇到非空格开头且不是entry:的行时,关闭标记,停止处理

最终输出示例

执行完上述命令后,输出会完全符合你的预期:

entry:
clear      at
clear      v0
clear      v1

内容的提问来源于stack exchange,提问作者Behrad Sharifi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 11:59:58