我正在努力理解64位体系结构中进程段的实现。我遇到了以下两个讨论:
64位应用程序:内存布局
进程段(堆栈、堆、数据和代码)在内存中是连续的吗?
然而,我仍然不清楚。在Intel 80286/80386时代,引入分段是为了克服使用具有16位地址的64K内存的限制。在那之后,出于兼容性的原因,32位的英特尔机器仍然继续使用它。
现在转到64位:手册说这里很少实现分段(参考:http://en.wikipedia.org/wiki/X86_memory_segmentation)。虚拟内存和分页可以提供对整个地址空间的访问以及保护。
所以我的问题是:64位编译器是如何编译64位程序的?他们是否仍然像以前一样使用"段"的概念(因为我仍然看到提到数据段、堆栈段等),但使用更高的#位段指针?或者,单词"segment"是指与64位体系结构完全不同的东西吗?
感谢您的帮助。
在64位模式下没有分段(感谢上帝!)。
英特尔领域的细分一直都是一团糟。