谁安排/创建程序的不同段(堆栈,堆,代码段,数据段)

时间:2015-04-23 06:04:17

标签: linux memory-management assembly

在浏览程序的不同部分时,我对是谁创建这些细分有一些疑问。 我的理解是汇编器在创建汇编代码时创建了这些不同的段,当加载到虚拟内存时,加载器为所有段创建虚拟地址空间并将它们存储在虚拟内存中。

请帮助我理解它。

2 个答案:

答案 0 :(得分:0)

是的,汇编程序会生成各个段,但您可以使用标签在代码中指定它们,例如.data指令告诉汇编程序我们已经到达了数据段。

答案 1 :(得分:0)

编译器将程序的可执行语句转换为CPU指令,静态数据的声明转换为机器特定的数据规范。要创建可执行文件,系统链接器会将指令和数据聚合为不同的段。所有指令都进入一个传统上称为text的段。同时,数据按两个段排列。一个称为数据,用于初始化的静态数据和文字常量,另一个称为bss,用于未初始化的静态数据。

http://www.ualberta.ca/CNS/RESEARCH/LinuxClusters/mem.html

描述所有内存管理流程的好网站。