转储可执行文件时,我只希望将代码段打印在标准输出上,而不希望偏移量和代码的二进制形式。我无法从中实现

man objdump
有办法吗?

最佳答案

您可以使用以下命令抑制目标代码的十六进制转储

--no-show-raw-insn

如果您在代码中有跳转,则需要使用偏移量来理解它们,但是,如果您确实要剥离它们,请使用类似以下内容的代码进行过滤:
objdump -d --no-show-raw-insn myfile.o | perl -p -e 's/^\s+(\S+):\t//;'

输出示例:
0000000000000000 <foo>:
retq
lea    0x0(%rsi),%rsi
lea    0x0(%rdi),%rdi
Disassembly of section .gnu.linkonce.t.goo:

0000000000000000 <goo>:
retq
lea    0x0(%rsi),%rsi
lea    0x0(%rdi),%rdi

关于objdump,显示无偏移,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8541906/

10-10 19:25