五月色综合_娇妻卧室含辱迎接领导h_美女ppp_亚洲欧美aaa_天天在线综合_91午夜激情_裸体裸乳免费看_国产精品无码99re_日韩午夜视频在线观看_色爽 av_欧美大奶子视频_美女被爆操_国内久久_日本免费福利视频_苏语棠在线电视剧在线高清在线观看

【Arm】PK51關于內存模式的解析與選擇

1、 文檔目標

在8051微控制器的開發環境中,Keil C51編譯器提供了三種內存模型(Small、Compact、Large),分別對應不同的存儲器分配策略。這些模型直接影響程序的性能、代碼密度和內存使用效率。本文將從技術原理、應用場景、性能權衡及設計選擇策略四個維度展開分析,為開發者提供系統化的決策框架。


2、 問題場景

在PK51中有三種內存模型可以進行選擇,但是這三種內存模型的具體作用以及應用場景大部分工程師都不太清楚。



圖2-1

3、軟硬件環境

1)、軟件版本:Keil PK51 9.60

2)、電腦環境:Windows 11

3)、外設硬件:無


4、解決方法

1)、在PK51中一共有三個內存模型:

(1)、“Small : variables in DATA”:在這個模型中,默認情況下,所有變量都駐留在8051系統的內部數據內存中,就像顯式地使用數據內存類型說明符聲明了它們一樣。在這種內存模型中,變量訪問是非常高效的。但所有對象(沒有顯式位于另一個內存區)和棧都必須能夠裝入內部物理內存。棧大小至關重要,因為使用的棧空間依賴于各種函數的嵌套深度。通常,如果鏈接器被配置為覆蓋內部數據內存中的變量,那么Small內存模型是最好的模型。


(2)、”Compact : variables in PDATA“:默認情況下,使用Compact模型時,所有變量都駐留在8051系統的外部數據內存的一頁中,就像顯式地使用pdata內存類型說明符聲明的那樣。這個內存模型最多可以容納256字節的變量。這種限制是由于所使用的尋址方案是間接通過寄存器R0和R1 (@R0, @R1)。這種內存模型沒有Small模型高效,變量訪問也沒有Small模型快。然而,Compact模型比Large模型更快。在使用Compact模型時,C51編譯器使用@R0和@R1操作數的指令訪問外部內存。R0和R1是字節寄存器,只提供地址的低位字節。如果您的目標硬件有超過256字節的外部內存,高位地址字節(或頁)由大多數8051設備的端口2提供。必須使用適當的外部內存頁(在啟動代碼中)初始化端口2,并且必須指定鏈接器PDATA的起始地址。


(3)、“Large : variables in XDATA:”:在Large模型中,默認情況下,所有變量都駐留在外部數據內存中(最高可達64K字節)。這與使用xdata內存類型說明符顯式聲明它們是一樣的。數據指針(DPTR)用于外部內存尋址。需要注意的是,通過數據指針訪問內存的效率很低,而且速度很慢,特別是對于兩個或兩個以上字節長的變量。這種類型的數據訪問機制比small model或compact model生成更多的代碼。


2)、這三種內存模型的主要差別就是代碼大小和變量存儲上,如圖4-2所示。在代碼大小上Large>Compact>Small。而且在Small模型下,大部分的數據存儲在Data段,在Compact和Large模型中就存儲到XData段了。



圖4-2

主站蜘蛛池模板: 横峰县| 井冈山市| 巍山| 沙田区| 凤庆县| 方正县| 曲靖市| 巴林左旗| 绵竹市| 霍州市| 公安县| 宜川县| 图们市| 岑溪市| 渭南市| 新竹市| 榆社县| 农安县| 永春县| 虞城县| 佛冈县| 叙永县| 林周县| 湟中县| 股票| 四平市| 阿城市| 永春县| 睢宁县| 集安市| 晋中市| 霸州市| 大同市| 特克斯县| 突泉县| 张北县| 中宁县| 西畴县| 浦北县| 湖口县| 孝义市|