在 CentOS(本质是 Linux 环境)里,“对比反汇编指令”通常有几种常见场景。下面按使用目的给你一个清晰指南。
objdump -d test
-d:反汇编可执行代码段-M intel:使用 Intel 语法(默认是 AT&T)objdump -d -M intel test
gdb ./test
(gdb) disassemble main
或 Intel 语法:
(gdb) set disassembly-flavor intel
(gdb) disassemble main
readelf -S test
查看节区,配合 objdump 使用。
objdump -d test > att.asm
objdump -d -M intel test > intel.asm
diff att.asm intel.asm
示例差异:
AT&T:
mov %rsp,%rbp
Intel:
mov rbp,rsp
objdump -d old_version > old.asm
objdump -d new_version > new.asm
diff old.asm new.asm
或更好用:
vimdiff old.asm new.asm
gcc -O0 -g -o test test.c
objdump -d -M intel test
结合:
gdb ./test
(gdb) disassemble /m main
/m 可显示源码与汇编对应。
gcc -O0 -o test_O0 test.c
gcc -O2 -o test_O2 test.c
objdump -d -M intel test_O0 > O0.asm
objdump -d -M intel test_O2 > O2.asm
vimdiff O0.asm O2.asm
objdump -d -M intel test | sed -n '/<main>:/,/^$/p'
objdump -d -M intel test | awk '{print $2, $3, $4, $5}'
r2 ./test在 CentOS 中,对比反汇编指令的核心是:用 objdump / gdb 生成汇编,再用 diff / vimdiff 对比不同语法、优化级别或版本差异。
如果你有具体对比目标(比如“对比两个 so 文件”或“对比优化前后函数”),可以告诉我,我给你定制命令。