您好,登錄后才能下訂單哦!
c語言的編譯模式是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
什么是編譯模式?
編譯模式是指如何在內存中放置程序代碼及數據,如何分配堆棧,并確認占用的內存大小及如何存取它們,當指定內存模式(編譯模式)以后,語言編譯程序將按事先選擇好的內存模式編譯組織程序。
C語言中提供了6種編譯模式,這6種模式是:微模式(Tiny),小模式(Small),中模式(Medium),緊湊模式(Compact),大模式(Large)和巨模式(Huge)。用戶可以按照自己的程序大小及需要進行選擇。
C語言編譯模式—微模式(Tiny)--near指針
在微模式下程序中的數據及代碼均放在同一段內,即它們不超過 64KB。在微模式下代碼段、堆棧段和數據段的段地址均相同,即CS=DS=SS=ES。
C語言編譯模式—小模式(Small)
在小模式下,程序中的代碼放在64KB的代碼段內,數據放在64KB的數據段內。在小模式下,棧段、附加數據段和數據段均指向同一地址,它們合三為一,即DS=SS=ES,指針都是near,一般程序均采用小模式編譯。
C語言編譯模式—中模式(Medium)
在中模式下,所有數據放在64KB的數據段內,因而數據段內使用near,代碼量可以大于64KB(允許達到1MB),因而可以在不同的代碼段內,代碼段使用(far遠程指針)。來自不同源文件的碼模塊放在不同的碼段內。
C語言編譯模式—緊湊模式(Compact)
在緊湊模式下,數據量超過64KB時,可放在多個數據段中,數據段內的指針是(far)。代碼量不超過64KB,在一個段內,因而代碼段內指針為近程的(near)。但在該模式下,靜態數據仍不能超過64KB,堆用far指針來存取。代碼、靜態數據、堆棧、堆各有自己的段。堆只有遠堆,沒有近堆。
C語言編譯模式—大模式(Large)
大模式下,代碼及數據均采用far指針,且都可達到1MB。靜態數據、堆棧、堆同緊湊模式,代碼同中模式。靜態數據仍跟緊湊模式一樣,不能超過64KB。
C語言編譯模式—巨模式(Huge)
巨模式下,代碼段及數據段均用far指針,代碼分布在不同的代碼段內,數據也分布在不同的數據段內,它們來自不同的源程序,大堆棧只有一個。而且靜態數據大小允許超過64KB。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。