objdump 不会显示长 64 位指令的十六进制数。
objdump -d myobj.o
其中一行如下:
3: 48 bb 2f 2f 62 69 6e movabs $0x68732f6e69622f2f,%rbx
尽管操作数有 8 个字节,但指令 hex 会在 mov 指令的前 7 个字节后截止。
我希望它显示的内容是:
3: 48 bb 2f 2f 62 69 6e 2f 73 68 movabs $0x68732f6e69622f2f,%rbx
我知道通过查看实际指令很容易推断出十六进制的其余部分,但我只是想知道如何让它显示所有的十六进制?
答案1
objdump 手册页说使用--insn-width:
$ objdump -d a.out | grep movabs
40053e: 48 b8 45 23 12 90 78 movabs $0x1234567890122345,%rax
40054c: 48 b8 45 33 12 90 73 movabs $0x1334567390123345,%rax
$ objdump --insn-width=10 -d a.out | grep movabs
40053e: 48 b8 45 23 12 90 78 56 34 12 movabs $0x1234567890122345,%rax
40054c: 48 b8 45 33 12 90 73 56 34 13 movabs $0x1334567390123345,%rax