Section vs. segment?

问题描述 投票:0回答:1

我已经阅读了this帖子,并且我知道段包含运行时信息并封装了包含链接信息的节。但是,我仍然对为什么在这两本书中似乎可以互换使用这些术语感到困惑。

“ Shellcoder的手册”

接下来,信息将从程序的可执行文件加载到新创建的地址空间。段分为三种类型:.text,.bss和.data。 .text段被映射为只读,而.data和.bss是可写的。 .bss和.data段保留用于全局变量。 .data段包含静态初始化数据,而.bss段包含未初始化的数据。决赛.text段保存程序指令。

“专业汇编语言”

所有汇编语言程序中的文本部分都是必需的。它是在可执行程序中声明指令代码的位置。data和bss部分是可选的,但通常在程序。数据部分声明已声明的数据元素具有初始值。这些数据元素用作内部的变量汇编语言程序。 bss部分声明数据元素用零(或null)值实例化的对象。这些数据元素最常用作汇编语言中的缓冲区程序。

assembly elf
1个回答
0
投票

在ELF中,它们是两个不同的相关事物。

  • 段在程序头中描述。松散地,当运行可执行文件时,每个段都将要加载的文件的块划分为一块。

  • 各节在节标题中描述。松散地,每个部分都描述了与程序相关的大量数据。

因此,节和段都是文件的大块,被缩写为偏移量和大小(尽管在两种情况下,大小都可能为0,在这种情况下,忽略了偏移量)。任何给定的ELF文件都可能只有段,也可能只有节,或者既有段又有段。为了可执行,它必须具有要加载的段。为了可链接,它必须具有描述什么位置的部分。因此,动态链接的可执行文件将始终同时具有两者。

© www.soinside.com 2019 - 2024. All rights reserved.