代码是否被视为可移植可执行文件格式的初始化数据,初始化数据和未初始化数据之间到底有什么区别?

Is code seen as initialized data in the Portable Executable format, and what exactly are the difference between initialized and unitialized data?

Is code seen as initialized data in the Portable Executable (PE) format, and what exactly are the difference between initialized and unitialized data?

根据以前的经验,我将初始化数据视为字符串或整数之类的东西,但是可执行代码在 PE 上下文中也称为初始化数据吗?

此外,初始化数据和未初始化数据之间到底有什么区别?

文档说:

Section Data

Initialized data for a section consists of simple blocks of bytes. However, for sections that contain all zeros, the section data need not be included.

...

每个进程基本上由地址 space 的 4 部分组成,它们是 进程可以访问,其中之一是 .Data 部分,它分为:

1) 初始化只读数据:这包含数据元素 由程序初始化,并且在执行过程中只读 进程的执行。

2) 初始化读写数据:这包含数据元素 由程序初始化,并在执行过程中被修改 流程执行。

3) Uninitialized Data : 这个包含的元素不是 由程序初始化,并在进程执行前设置为 0。 这些也可以被修改并称为 BSS(Block Started Symbol)。这 此类元素的优点是,系统不必在 该区域的程序文件,因为它在 OS 之前被初始化为 0 进程开始执行。

Is code seen as initialized data in the Portable Executable (PE) format

任何程序的代码都可以在.Text部分找到,它包含实际要执行的指令,在许多操作系统上这被设置为只读,类似于初始化的只读数据。

what exactly are the differences between initialized and unitialized data?

所以它们之间的区别在于它们的值,初始化数据在进程开始之前具有由程序设置的唯一值并且可以是 Read Write 或 Read Only Data ,另一方面未初始化数据值设置由OS变为0,你可以看看here.

阿姆兰·阿卜杜勒卡德尔。