posts - 3,comments - 3,trackbacks - 0
               編譯模式模式有時也叫做尋址模式或內(nèi)存模式,它處理的就是如何在內(nèi)存中為程序、數(shù)據(jù)、堆棧分配空間并存取它們。
               
                微模式(tiny):微模式下整個程序只有一個段,這個段包含碼、靜態(tài)和全局?jǐn)?shù)據(jù)、堆棧和堆。因?yàn)橹挥幸粋€段,在執(zhí)行時DOS將把寄存器CS、DS、SS設(shè)置為相等,全都指向這個段。在這個段內(nèi),碼首先裝入,地址最低,接著是靜態(tài)變量和全局變量。然后是堆,最后是堆棧。堆棧和堆都是動態(tài)的,對從低地址往高地址增長,堆棧從高地址往低地址增長,若兩者相等,則表示空間耗完了。

              小模式:小模式是最常用的模式,小模式和微模式一樣都是小數(shù)據(jù)和小程序,但是它的碼和數(shù)據(jù)/堆棧/堆段是分開的,所以CS不等于DS和SS。其次,除了和數(shù)據(jù)/堆棧共用一個段的堆外,還有一個遠(yuǎn)堆。

              中模式:在數(shù)據(jù)、堆棧、堆的分配方面,中模式和小模式是一樣的,差別在于碼段的分配,中模式下,來自不同源文件的碼模塊放在不同的碼段內(nèi)。嚴(yán)格的講,同一個源文件內(nèi)的各函數(shù)也是放在不同的碼段的。

              緊湊模式:緊湊模式在概念上是最簡單的。碼、靜態(tài)數(shù)據(jù)、堆棧、堆各有自己的段。堆只有遠(yuǎn)堆,沒有近堆。

              大模式:在靜態(tài)數(shù)據(jù)、堆棧、堆的分配方面,大模式等同于緊湊模式,在碼的分配方面,大模式等同于中模式。無論在數(shù)據(jù)指針還是函數(shù)指針,一律都是遠(yuǎn)指針。和緊湊模式一樣,靜態(tài)數(shù)據(jù)的總量不能超過64K。

              巨模式:巨模式取消了靜態(tài)數(shù)據(jù)的總量不能超過64K的的限制,來自不同源文件的碼放在不同的段內(nèi),來自不同源文件的靜態(tài)數(shù)據(jù)也放在不同的段內(nèi),只有堆棧是合在一起的。
          posted on 2008-02-11 11:57 alec的工作室 閱讀(619) 評論(1)  編輯  收藏

          FeedBack:
          # re: Turbo C 的六種編譯模式
          2008-07-22 15:12 | liguanyao
          請問一下這六種編譯模式如何設(shè)置啊?
          我寫了一個C源程序,大概600多行,編譯沒有問題,可是運(yùn)行起來之后就有時候會自動退出,退出是隨時的,有時不退出,我懷疑是內(nèi)存不足的原因,所以請教一下如何用大內(nèi)存編譯。謝謝!!  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 昭平县| 松江区| 沂南县| 广州市| 南靖县| 抚远县| 绍兴市| 安福县| 定安县| 马关县| 平安县| 玉田县| 巍山| 罗城| 鄯善县| 育儿| 乐都县| 永德县| 安西县| 陆丰市| 滨州市| 清徐县| 阜城县| 习水县| 句容市| 天镇县| 华容县| 临漳县| 嘉禾县| 桃园县| 龙口市| 西安市| 黔南| 望奎县| 苍溪县| 大方县| 肇庆市| 贵州省| 和田市| 大荔县| 榆林市|