当我在Turbo C编译器中选择“大内存模型”而不是“小内存模型”时会有什么不同?
这如何改变我的程序的行为?
的问候, essbeev。
答案 0 :(得分:8)
它指的是16位内存模型的非常古老的概念。 32位& 64位计算机对这些内存模型一无所知。
回到你的问题:小 - 声明指针允许你只处理64k的数据或代码。指针长度为16位。整个程序都在单个64k段中。要显式地寻址内存的另一部分,您需要将指针显式声明为FAR。 large - 声明指向代码或数据的指针有32位,因此默认为FAR。
希望你不要长时间坚持这些问题,因为它是过时的概念。
答案 1 :(得分:2)
8086处理器具有20位物理寻址,使用16位段寄存器和16位偏移的组合。您可以将两者都打包成32位FAR
指针,或者您可以忽略默认段寄存器并仅在NEAR
指针中存储低16位。
small
和large
模型之间的区别仅在于未明确指定时,指针是默认为NEAR
还是FAR
。