keil中的存儲模式
存儲模式決定了默認的存儲器類型此存儲器類型將應用于函數參數局部變量和定義時未包含存儲器類型的變量你可以在命令行用SMALL COMPACT和LARGE參數定義存儲模式,定義變量時使用存儲器類型顯式定義將屏蔽默認存儲器類型。
本文引用地址:http://cqxgywz.com/article/201611/317506.htm
小(SMALL)模式
所有變量都默認在8051的內部數據存儲器中。這和用data顯式定義變量起到相同的作用。在此模式下,變量訪問是非常快速的,然而所有數據對象,包括堆棧都必須放在內部RAM中。堆棧空間面臨溢出因為堆棧所占用多少空間依賴于各個子程序的調用嵌套深度。在典型應用中如果具有代碼分段功能的BL51連接/定位器被配置成覆蓋內部數據存儲器中的變量時,此SMALL模式是最好的選擇
緊湊 COMPACT 模式
此模式中,所有變量都默認在8051的外部數據存儲器的一頁中地址的高字節往往通過Port 2輸出 ,其值必須由你在啟動代碼中設置編譯器不會為你設置這和用pdata顯式定義變量起到相同的作用。此模式最多只能提供256字節的變量這種限制來自于間接尋址所使用的R0,R1 MOVX @R0/R1。 這種模式不如SMALL模式高效所以變量的訪問不夠快,不過它比LARGE模式要快。
大 LARGE 模式
在大模式下,所有的變量都默認在外部存儲器中(xdata )。這和用xdata顯式定義變量起到相同的作用。數據指針DPTR 用來尋址。通過DPTR進行存儲器的訪問的效率很低,特別是在對一個大于一個字節的變量進行操作時尤為明顯 ,此數據訪問類型比SMALL和COMPACT模式需要更多的代碼。


評論