在 Linux 下使用 gcc 反汇编代码,通常有几种常见方式,取决于你是想:
下面按使用场景说明。
gcc -S test.c
生成:
test.s # 汇编代码
gcc -S -masm=intel test.c
gcc -S -g -fverbose-asm test.c
gcc -c test.c
gcc -Wa,-alh -c test.c
-Wa,-alh 会输出 汇编 + 源码对照
虽然你问的是 gcc,但 真正“反汇编”通常用 objdump(binutils)
objdump -d a.out
objdump -d -M intel a.out
gcc -g test.c -o test
objdump -S test
objdump -d a.out | grep -A 20 "<main>:"
objdump -d -M intel mymodule.ko
objdump -d vmlinux | less
gcc -c test.c -o test.o -Wa,-adlhn
-ad:反汇编-l:插入源码行号-h:显示符号表-n:数字形式| 目的 | 命令 |
|---|---|
| C → 汇编 | gcc -S |
| 反汇编可执行 | objdump -d |
| 混合源码 | objdump -S |
| Intel 语法 | -masm=intel / -M intel |
如果你愿意,可以告诉我:
我可以给你更精确的命令。