代码被视为可移植可执行文件格式的初始化数据,以及初始化和统一数据之间究竟有什么区别?

时间:2016-08-20 10:14:04

标签: c++ windows assembly portable-executable

  

代码是否被视为可移植可执行文件(PE)格式的初始化数据,以及初始化和单元化数据之间究竟有什么区别?

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

此外,初始化和单一化数据之间究竟有什么区别?

文档说:

  

部分数据

     

部分的初始化数据由简单块组成   的字节数。但是,对于包含全零的部分,该部分   不需要包括数据。

     

...

1 个答案:

答案 0 :(得分:1)

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

1)初始化只读数据:这包含数据元素 由程序初始化,它们只在读取期间读取 执行过程。

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

3)未经初始化的数据:这包含的元素不是 由程序初始化并在进程执行前设置为0。 这些也可以修改并称为BSS(块起始符号)。该 这些元素的基础是,系统不必分配空间 该区域的程序文件,b'因为它在OS之前被OS初始化为0 过程开始执行。

  

代码被视为可移植可执行(PE)格式的初始化数据

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

  

初始化和单一化数据之间究竟有什么区别?

因此,它们之间的区别在于它们的值,初始化数据具有在进程开始之前由程序设置的唯一值,并且可以是Read Write或Read Only Data,另一方面,未初始化的数据值设置为0通过操作系统,您可以查看here

Amrane Abdelkader。