我想弄清楚这个objdump -d的所有元素是什么意思。
例如我有:
08048b50 <phase_1>:
8048b50: 83 ec 1c sub $0x1c,%esp
8048b53: c7 44 24 04 68 a2 04 movl $0x804a268,0x4(%esp)
8048b5a: 08
8048b5b: 8b 44 24 20 mov 0x20(%esp),%eax
8048b5f: 89 04 24 mov %eax,(%esp)
8048b62: e8 63 04 00 00 call 8048fca <strings_not_equal>
8048b67: 85 c0 test %eax,%eax
8048b69: 74 05 je 8048b70 <phase_1+0x20>
8048b6b: e8 f5 06 00 00 call 8049265 <explode_bomb>
8048b70: 83 c4 1c add $0x1c,%esp
8048b73: c3 ret
具体来说,我不确定第1列和中间列告诉我的是什么
答案 0 :(得分:4)
第一列告诉您代码在运行时所在的内存地址。
第二列具有可执行指令的十六进制版本。
第三列(和第四列)具有第二列的反汇编版本。即操作码和操作数。
答案 1 :(得分:0)
第一个:地址,十六进制。 两个相邻地址之间的差异是机器码的数量。
second : 机器码,十六进制。
第三个:汇编代码,从机器代码反汇编。
执行'objdump -no-leading-addr -S **.o',第一列将被隐藏。
objdump --version 苹果 LLVM 版本 11.0.0 (clang-1100.0.33.17)