我目前正在阅读Jeff Duntemann的“汇编语言”。我对描述保护平面模型的内存组织的图片感到有些沮丧。它显示了一块4GB大小的内存。在那里,指令区域靠近底部(低地址),然后是上面的数据区域,并靠近顶部堆叠。同时,如果我理解正确的话,DS&平面模式下的CS寄存器不会影响指令或数据的起始地址(在4GB以内)。
我的问题是:
然后,谁在那些4GB中分发代码和数据区域(下面的代码,上面的数据)?谁决定指令的起始地址和地址数据的起始位置? 书中有一些汇编程序,但看起来程序员并没有选择内存位置来获取指令。数据(在他自己的4GB内)。他只是在某处声明了数据部分并在说明中输入了类型。另一方面,* .lst文件已经具有指令和数据块的地址。那么是汇编程序决定地址吗?答案 0 :(得分:0)
实际上,链接器决定了代码和数据部分的位置。它的不同之处在于默认值是什么,但很多时候它们允许您指定自己的地址(例如,ld
链接描述文件)。但是,这只适用于少数几种情况,所以最好让链接器自己选择地址。