编译模式模式有时也叫做寻址模式或内存模式,它处理的就是如何在内存中为程序、数据、堆栈分配空间并存取它们。
微模式(tiny):微模式下整个程序只有一个段,这个段包含码、静态和全局数据、堆栈和堆。因为只有一个段,在执行时DOS将把寄存器CS、DS、SS设置为相等,全都指向这个段。在这个段内,码首先装入,地址最低,接着是静态变量和全局变量。然后是堆,最后是堆栈。堆栈和堆都是动态的,对从低地址往高地址增长,堆栈从高地址往低地址增长,若两者相等,则表示空间耗完了。
小模式:小模式是最常用的模式,小模式和微模式一样都是小数据和小程序,但是它的码和数据/堆栈/堆段是分开的,所以CS不等于DS和SS。其次,除了和数据/堆栈共用一个段的堆外,还有一个远堆。
中模式:在数据、堆栈、堆的分配方面,中模式和小模式是一样的,差别在于码段的分配,中模式下,来自不同源文件的码模块放在不同的码段内。严格的讲,同一个源文件内的各函数也是放在不同的码段的。
紧凑模式:紧凑模式在概念上是最简单的。码、静态数据、堆栈、堆各有自己的段。堆只有远堆,没有近堆。
大模式:在静态数据、堆栈、堆的分配方面,大模式等同于紧凑模式,在码的分配方面,大模式等同于中模式。无论在数据指针还是函数指针,一律都是远指针。和紧凑模式一样,静态数据的总量不能超过64K。
巨模式:巨模式取消了静态数据的总量不能超过64K的的限制,来自不同源文件的码放在不同的段内,来自不同源文件的静态数据也放在不同的段内,只有堆栈是合在一起的。
posted on 2008-02-11 11:57
alec的工作室 阅读(601)
评论(1) 编辑 收藏