我有一个问题要我解释一个过程存储在 linux 内存映射的哪些区域。该问题指示我使用 objdump -h 来查找此信息。
现在,我有点搞不清楚“内存中的区域”是什么意思。
我知道对于给定的过程,我们有特定的寄存器可以使用(例如 %eax、%edx...),而且对于每个变量,我们都有一个存储位置(例如 8(%ebp) ).此外,我知道我们有 %esp 和 %ebp 寄存器来“照顾”堆栈。
我还在我的文件上运行了 objdump -h,但从我得到的信息中我无法说出任何具体的信息。
那么我是否应该只提及正在使用的寄存器和存储此过程变量的内存地址?
最佳答案
我相信您的问题是询问链接器在操作系统加载时指定您的实际代码驻留在内存中的位置。该代码区域将由程序计数器寄存器或 x86 上的 %EIP
表示。
通常在 Linux 上,程序代码和只读变量存储在进程映射内存的较低区域,堆栈位于较高区域(即堆栈向下增长)。
关于c - 用于存储程序的 Linux 内存映射区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683003/