c語言的編譯模式是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
10年積累的成都網(wǎng)站設(shè)計、成都做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有包頭免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。什么是編譯模式?
編譯模式是指如何在內(nèi)存中放置程序代碼及數(shù)據(jù),如何分配堆棧,并確認(rèn)占用的內(nèi)存大小及如何存取它們,當(dāng)指定內(nèi)存模式(編譯模式)以后,語言編譯程序?qū)词孪冗x擇好的內(nèi)存模式編譯組織程序。
C語言中提供了6種編譯模式,這6種模式是:微模式(Tiny),小模式(Small),中模式(Medium),緊湊模式(Compact),大模式(Large)和巨模式(Huge)。用戶可以按照自己的程序大小及需要進(jìn)行選擇。
C語言編譯模式—微模式(Tiny)--near指針
在微模式下程序中的數(shù)據(jù)及代碼均放在同一段內(nèi),即它們不超過 64KB。在微模式下代碼段、堆棧段和數(shù)據(jù)段的段地址均相同,即CS=DS=SS=ES。
C語言編譯模式—小模式(Small)
在小模式下,程序中的代碼放在64KB的代碼段內(nèi),數(shù)據(jù)放在64KB的數(shù)據(jù)段內(nèi)。在小模式下,棧段、附加數(shù)據(jù)段和數(shù)據(jù)段均指向同一地址,它們合三為一,即DS=SS=ES,指針都是near,一般程序均采用小模式編譯。
C語言編譯模式—中模式(Medium)
在中模式下,所有數(shù)據(jù)放在64KB的數(shù)據(jù)段內(nèi),因而數(shù)據(jù)段內(nèi)使用near,代碼量可以大于64KB(允許達(dá)到1MB),因而可以在不同的代碼段內(nèi),代碼段使用(far遠(yuǎn)程指針)。來自不同源文件的碼模塊放在不同的碼段內(nèi)。
C語言編譯模式—緊湊模式(Compact)
在緊湊模式下,數(shù)據(jù)量超過64KB時,可放在多個數(shù)據(jù)段中,數(shù)據(jù)段內(nèi)的指針是(far)。代碼量不超過64KB,在一個段內(nèi),因而代碼段內(nèi)指針為近程的(near)。但在該模式下,靜態(tài)數(shù)據(jù)仍不能超過64KB,堆用far指針來存取。代碼、靜態(tài)數(shù)據(jù)、堆棧、堆各有自己的段。堆只有遠(yuǎn)堆,沒有近堆。
C語言編譯模式—大模式(Large)
大模式下,代碼及數(shù)據(jù)均采用far指針,且都可達(dá)到1MB。靜態(tài)數(shù)據(jù)、堆棧、堆同緊湊模式,代碼同中模式。靜態(tài)數(shù)據(jù)仍跟緊湊模式一樣,不能超過64KB。
C語言編譯模式—巨模式(Huge)
巨模式下,代碼段及數(shù)據(jù)段均用far指針,代碼分布在不同的代碼段內(nèi),數(shù)據(jù)也分布在不同的數(shù)據(jù)段內(nèi),它們來自不同的源程序,大堆棧只有一個。而且靜態(tài)數(shù)據(jù)大小允許超過64KB。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。