在 Linux 下使用 gcc 进行反汇编,通常有几种常见方式,取决于你想反汇编 源码、目标文件 还是 可执行文件。下面按使用场景说明。
gcc -S test.c
生成:
test.s(AT&T 语法汇编)如果想用 Intel 语法:
gcc -S -masm=intel test.c
gcc -o test test.c
objdump -d test
只看 main 函数:
objdump -d test | grep -A 30 '<main>:'
使用 Intel 语法:
objdump -d -M intel test
gcc -c test.c
objdump -d test.o
gcc -g -o test test.c
objdump -S test
或:
objdump -S -M intel test
gcc 本身不直接“反汇编”,但可以通过:
gcc -c -g -Wa,-a,-ad test.c > test.asm
生成带源码注释的汇编。
gdb ./test
(gdb) disassemble main
Intel 语法:
(gdb) set disassembly-flavor intel
(gdb) disassemble main
✅ 学习 / 调试
gcc -g -O0 -o test test.c
objdump -S -M intel test
✅ 分析优化后的代码
gcc -O2 -o test test.c
objdump -d -M intel test
| 工具 | 用途 |
|---|---|
| gcc -S | 源码 → 汇编 |
| objdump -d | 反汇编二进制 |
| objdump -S | 汇编 + 源码 |
| gdb | 运行时反汇编 |
如果你有 具体代码 / 架构(x86 / ARM)/ 优化级别,我可以给你更精确的反汇编示例。