因此在x86-64中放弃了内存分段,但是当我们使用汇编时,我们可以在代码中指定.code和.data节/段,并且还有堆栈指针寄存器。
堆栈段,数据段和代码段寄存器。
代码/数据/堆栈的划分方式和位置是由CPU还是OS实现的?
因为当我们调试并查看某个C程序的反汇编视图时,地址空间是线性的,没有分区。
当他们说数据段有"部分"对于全局,静态和堆,这是OS抽象吗?
答案 0 :(得分:0)
您需要使用不同的模型来考虑内存使用情况。使用具有以下属性的程序部分来考虑内存:
可以在页面级别设置这些属性。在系统中,您可以将页面交错
代码数据代码数据代码数据
通常情况下,链接器会将类似的部分放在一起,但它可以通过分页以几乎任何方式布置内存。通常的机制是,如果您为部分命名,链接器将收集和分组相同部分的内容。
您不受Ye Olde 8086的细分系统的限制。
然后,部件由操作系统和链接器控制。