objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。
最近的工作需要将一个模块部署在不同的硬件平台上,所以特别关注不同硬件平台的编译环境和指令差异。
为了看不同平台编译出来的可执行文件的差异,所以用到了这个objdump指令,特在此记录这个指令的常用方法。
本人测试是在MAC OS上做的,
$objdump -version
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Optimized build.
Default target: x86_64-apple-darwin18.7.0
Host CPU: skylake
Registered Targets:
aarch64 - AArch64 (little endian)
aarch64_be - AArch64 (big endian)
arm - ARM
arm64 - ARM64 (little endian)
armeb - ARM (big endian)
thumb - Thumb
thumbeb - Thumb (big endian)
x86 - 32-bit X86: Pentium-Pro and above
x86-64 - 64-bit X86: EM64T and AMD64
为了看具体指令,objdump -S xxx
$objdump -S a.out
a.out: file format Mach-O 64-bit x86-64
Disassembly of section __TEXT,__text:
__text:
100000f80: 55 pushq %rbp
100