gdb中的地址究竟是什么反汇编?

时间:2014-09-18 03:59:43

标签: assembly gdb disassembly

我正在尝试学习一些程序集并且一直在使用gdb来反汇编简单的程序。但我似乎无法找到这个问题的答案(也许我不知道该寻找什么):每行开头的那些地址究竟是指什么?它们是硬盘上程序中指令的位置吗?还是RAM?

例如:

   0x080483dc <+0>: push   %ebp
   0x080483dd <+1>: mov    %esp,%ebp
   0x080483df <+3>: sub    $0x10,%esp

1 个答案:

答案 0 :(得分:2)

那些表示程序存储空间中指令的地址。

在现代操作系统中,每个程序在执行时都会在RAM中分配一个单独的内存空间。然后将二进制文件内存映射到该内存空间。因此,每条指令都有一个地址,并由gdb反映出来,以便您知道自己在该计划中的位置。

下图说明了进程的内存空间如何: enter image description here

您可以阅读this文章,了解有关计划和地址空间的更多信息