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

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

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

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

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

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 南雄市| 庆云县| 成都市| 手机| 高邑县| 恩平市| 个旧市| 板桥市| 汾西县| 铅山县| 瓮安县| 城固县| 黑龙江省| 罗城| 古浪县| 吴忠市| 怀来县| 乌拉特后旗| 贡觉县| 大理市| 武宁县| 高邮市| 岳普湖县| 南郑县| 莲花县| 娱乐| 长岛县| 海淀区| 凭祥市| 广灵县| 同德县| 宁化县| 琼结县| 娄烦县| 鄄城县| 衡南县| 恩平市| 达州市| 澄江县| 盐池县| 吉木乃县|