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