0

我目前正在阅读 Jeff Duntemann 的“Assembly Language step by step”。我对描述受保护平面模型的内存组织的图片感到有些沮丧。它显示了一块 4GB 大小的内存。在那里,指令区靠近底部(低地址),然后是上面的数据区,堆栈靠近顶部。同时,如果我理解正确的话,平面模式下的 DS 和 CS 寄存器不会影响指令或数据的起始地址(在 4GB 内)。

我的问题是:

那么,谁在这 4GB 中分配代码和数据区域(下面的代码,上面的数据)?谁决定指令从哪个地址开始,数据从哪个地址开始?书中有一些汇编程序,但看起来程序员没有为指令和数据选择内存位置(在他自己的 4GB 内)。他只是在某处声明数据部分并输入指令。另一方面,*.lst 文件已经有指令和数据块的地址。那么是汇编程序决定地址吗?

4

1 回答 1

0

实际上是链接器决定了代码和数据部分的位置。它因不同的链接器而异,默认值是什么,但很多时候它们允许您指定自己的地址(例如,ld链接器脚本)。然而,这仅在少数情况下有用,因此您最好让链接器自行选择地址。

于 2013-06-27T14:56:31.470 回答