gpt4 book ai didi

assembly - 部分与部分?

转载 作者:行者123 更新时间:2023-12-05 01:36:58 26 4
gpt4 key购买 nike

我已经读过this发布并且我知道段包含运行时信息并封装部分,其中包含链接信息。但是,我仍然不明白为什么这些术语在这两本书中似乎可以互换使用。

《Shellcoder 手册》

Next, information is loaded from the program’s executable file to the newly created address space. There are three types of segments: .text, .bss, and .data. The .text segment is mapped as read-only, whereas .data and .bss are writable. The .bss and .data segments are reserved for global variables. The .data segment contains static initialized data, and the .bss segment contains uninitialized data. The final segment, .text, holds the program instructions.

《专业汇编语言》

The text section is required in all assembly language programs. It is where the instruction codes are declared within the executable program. The data and bss sections are optional, but often used within a program. The data section declares data elements that are declared with an initial value. These data elements are used as variables within the assembly language program. The bss section declares data elements that are instantiated with a zero (or null) value. These data elements are most often used as buffer areas within the assembly language program.

最佳答案

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

  • 段在程序头中描述。松散地,每个段描述了在运行可执行文件时要加载到内存中的文件 block 。

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

所以部分和段都是文件的 block ,描述为偏移量和大小(尽管在这两种情况下大小都可能为 0,在这种情况下偏移量将被忽略)。任何给定的 ELF 文件可能只有段,或者只有节,或者既有段又有节。为了可执行,它必须有要加载的段。为了可链接,它必须包含描述内容所在的部分。

动态链接的可执行文件必须有段,但部分仍然是可选的:有一个 PT_DYNAMIC 段(参见 this )指示 .dynamic 部分的内容.这样,动态链接器仍然可以找到符号表.dynsym的偏移量。

一般来说,段彼此不重叠,节也不彼此重叠,但节可以描述作为段的一部分(或全部)的数据。这不是格式的严格要求,但违反了就奇怪了。一个段描述两个不同段的数据也会很奇怪。还有(通常)不属于任何段的部分。

关于assembly - 部分与部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61582715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com