什麼是編譯模式?
編譯模式是指如何在記憶體中放置程式碼及數據,如何分配堆疊,並確認佔用的記憶體大小及如何存取它們,當指定記憶體模式(編譯模式)以後,語言編譯程式將以事先選擇好的記憶體模式編譯組織程式。
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。
推薦教學:C語言教學
以上是c語言是一種什麼編譯形式的語言的詳細內容。更多資訊請關注PHP中文網其他相關文章!