小内存模型和大内存模型有什么区别?

时间:2010-02-01 09:55:23

标签: memory model compiler-construction

当我在Turbo C编译器中选择“大内存模型”而不是“小内存模型”时会有什么不同?

这如何改变我的程序的行为?

的问候, essbeev。

2 个答案:

答案 0 :(得分:8)

它指的是16位内存模型的非常古老的概念。 32位& 64位计算机对这些内存模型一无所知。

回到你的问题:小 - 声明指针允许你只处理64k的数据或代码。指针长度为16位。整个程序都在单个64k段中。要显式地寻址内存的另一部分,您需要将指针显式声明为FAR。 large - 声明指向代码或数据的指针有32位,因此默认为FAR。

希望你不要长时间坚持这些问题,因为它是过时的概念。

答案 1 :(得分:2)

8086处理器具有20位物理寻址,使用16位段寄存器和16位偏移的组合。您可以将两者都打包成32位FAR指针,或者您可以忽略默认段寄存器并仅在NEAR指针中存储低16位。

smalllarge模型之间的区别仅在于未明确指定时,指针是默认为NEAR还是FAR