在尝试使用GDB时,我注意到一些汇编指令后缀为#(hex)。这是一个例子:
0x7ffff1f0f0d6 <inflate+5158> mov %rax,0x18(%r13)
0x7ffff1f0f0da <inflate+5162> jmpq 0x7ffff1f0e3bf <inflate+1807>
0x7ffff1f0f0df <inflate+5167> lea 0x7bca(%rip),%rsi # 0x7ffff1f16cb0
0x7ffff1f0f0e6 <inflate+5174> movl $0x1d,0x0(%r13)
0x7ffff1f0f0ee <inflate+5182> mov %rsi,0x30(%rbp)
# 0xfffff1f16cb0
部分的含义是什么?它看起来像某种评论,但它试图传达什么信息?
额外信息: 这是一个没有调试符号的x86_64应用程序的反汇编。
答案 0 :(得分:2)
这只是您的反汇编程序的友好服务,它不在机器代码中。 gdb
为您计算实际地址,因此您不必手动执行此操作。在您的示例0x7bca(%rip)
中,%rip
的值为0x7ffff1f0f0e6
(以下说明的地址),并在其中添加0x7bca
,即0x7ffff1f16cb0
,即打印的值