編譯模式模式有時也叫做尋址模式或內存模式,它處理的就是如何在內存中為程序、數據、堆棧分配空間并存取它們。
微模式(tiny):微模式下整個程序只有一個段,這個段包含碼、靜態和全局數據、堆棧和堆。因為只有一個段,在執行時DOS將把寄存器CS、DS、SS設置為相等,全都指向這個段。在這個段內,碼首先裝入,地址最低,接著是靜態變量和全局變量。然后是堆,最后是堆棧。堆棧和堆都是動態的,對從低地址往高地址增長,堆棧從高地址往低地址增長,若兩者相等,則表示空間耗完了。
小模式:小模式是最常用的模式,小模式和微模式一樣都是小數據和小程序,但是它的碼和數據/堆棧/堆段是分開的,所以CS不等于DS和SS。其次,除了和數據/堆棧共用一個段的堆外,還有一個遠堆。
中模式:在數據、堆棧、堆的分配方面,中模式和小模式是一樣的,差別在于碼段的分配,中模式下,來自不同源文件的碼模塊放在不同的碼段內。嚴格的講,同一個源文件內的各函數也是放在不同的碼段的。
緊湊模式:緊湊模式在概念上是最簡單的。碼、靜態數據、堆棧、堆各有自己的段。堆只有遠堆,沒有近堆。
大模式:在靜態數據、堆棧、堆的分配方面,大模式等同于緊湊模式,在碼的分配方面,大模式等同于中模式。無論在數據指針還是函數指針,一律都是遠指針。和緊湊模式一樣,靜態數據的總量不能超過64K。
巨模式:巨模式取消了靜態數據的總量不能超過64K的的限制,來自不同源文件的碼放在不同的段內,來自不同源文件的靜態數據也放在不同的段內,只有堆棧是合在一起的。
posted on 2008-02-11 11:57
alec的工作室 閱讀(610)
評論(1) 編輯 收藏