Keil中存儲器類型和存儲器模型

存儲器類型

C51編譯器支持8051及其派生器件結構並提供對8051所有存儲區的訪問。每個變量可以明確地分配到指定存儲空間。對內部數據存儲器的訪問比對外部數據的訪問快許多。因此,應當將頻繁使用的變量放在內部存儲器,而把較少使用的變量放在外部存儲器中。
變量的定義包括了存儲器類型的指定,可以指定變量存放的位置。

存儲器類型 描述
code 程序存儲器(64K字節);通過操作碼MOVC @A+DPTR進行訪問
data 直接尋址內部數據存儲器;對變量的最快訪問(128字節)
idata 間接尋址內部數據存儲器;訪問整個內部地址空間(256字節)
bdata 位尋址內部數據存儲器;允許位和字節混合尋址(16字節)
xdata 外部數據存儲器(64K字節);通過MOVX @DPTR 訪問
pdata 頁外部數據存儲器(256字節);通過MOVX @Rn訪問

存儲器模型

存儲器模型決定用於函數自變量、自動變量和沒有明確存儲類型的變量的默認存儲器類型。在命令行中使用SMALL、COMPACTLARGE控制命令指定存儲器類型。

SMALL

在該模型中,所有變量都默認位於8051內部數據存儲器。這和使用data指定存儲器類型的方式一樣。此模型對於變量訪問的效率很高,彈所有的數據對象和堆棧必須適合內部RAM。堆棧的大小很關鍵。因爲使用的堆棧空間是由不同函數嵌套的深度決定的。通常,如果BL51連接器/定位器都將變量都配置在內部數據存儲器內,SMALL模型是最佳選擇。

COMPACT

使用COMPACT模型,所有變量都默認在外部數據存儲器的一頁內。這和使用pdata指定存儲器類型一樣。該存儲器類型適用於變量不超過256個字節。此限制是由尋址方式所決定的。該存儲器類型的效率低於SMALL模型。對變量的訪問速度要慢一些,但比LARGE模型快。地址的高字節通常通過口2設置。編譯器沒有設置該口。

LARGE

在LARGE模型中,所有變量都默認位於外部數據存儲器。這個使用xdata指定存儲器類型一樣。使用數據指針(DPTR)進行尋址。通過數據指針訪問外部數據存儲器的效率較低。特別是當變量爲2個字節或更多字節時,該模型的數據訪問比SMALL和COMPACT產生更多的代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章