日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

ARM 嵌入式系统开发 - 软件设计与优化

發(fā)布時間:2024/3/12 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM 嵌入式系统开发 - 软件设计与优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ARM 的非 RISC 特征

允許特定指令的執(zhí)行周期可變

增加桶形移位器

使用 16 Thumb 指令

使用條件執(zhí)行指令

使用增強 DSP 指令

Jazelle

Jazelle ARM 引進的第 3 種指令集。執(zhí)行 8 位指令,硬件完成超過 60% Java 字節(jié)代碼,其余代碼由軟件完成。 為了執(zhí)行 Java 字節(jié)碼,需要外加一個 Java 虛擬機的特殊版本。Jazelle 是一個封閉的指令集,沒有公開。要從 ARM SUN 獲得許可,以得到額外的軟件。

ARM PC

在指令執(zhí)行階段, pc 總是指向該指令地址加 8 字節(jié)的地址。當處理器處于 Thumb 模式時, pc 的值為正在執(zhí)行指令的地址加 4

3個值得注意的流水線特征

第一,?? 執(zhí)行一條分支指令或直接修改 pc 而發(fā)生跳轉(zhuǎn)時,會使 ARM 內(nèi)核清空流水線。

第二,?? ARM10 使用分支預(yù)測技術(shù),通過預(yù)測可能的分支并在指令執(zhí)行前裝載新的分支地址,從而減小了清空流水線的影響。

第三,?? 即使產(chǎn)生了一個中斷,一條處于“執(zhí)行”階段的指令也將會完成。流水線里其它指令將會被放棄,而處理器將從向量表的適當入口開始填充流水線。

高效的 C 編程

大多數(shù) ARM 數(shù)據(jù)處理操作都是 32 位的。基于這個原因,局部變量應(yīng)該盡可能使用 32 的類型。(int 或者 long)同樣,函數(shù)參數(shù)以及返回值也應(yīng)該使用 32 位類型。

除法運算時使用無符號數(shù)執(zhí)行速度更快。

對于存放在主存儲器中的數(shù)組和全局變量,應(yīng)盡可能地使用小尺寸的數(shù)據(jù)類型。可以節(jié)省空間。

使用無符號的循環(huán)計數(shù)值,For(I=64;I!=0;I--) for(I=0;I<64;I++)效率高很多!

至少執(zhí)行一次的循環(huán)使用 do-while 效率比較高。

局部變量不要太多(不要超過12個),重要變量和常用變量要使用寄存器。最內(nèi)層循環(huán)變量比較重要。

函數(shù)參數(shù)不要超過4個(C++不要超過3個),太多時使用結(jié)構(gòu)指針。

把比較小的被調(diào)用函數(shù)和調(diào)用函數(shù)放在同一個源文件中,并且要先定義,后調(diào)用。

建議一個新的局部變量來保存公共表達式的值,而且要避免使用局部變量的地址。

結(jié)構(gòu)體元素要按照元素大小從小到大排列,內(nèi)嵌的大的結(jié)構(gòu)體使用指針。由于位填充方式編譯器相關(guān),可以人工對齊結(jié)構(gòu)體內(nèi)部元素。枚舉類型編譯器相關(guān),所以在結(jié)構(gòu)體中要謹慎使用。

位域會明顯減低效率,應(yīng)盡量避免使用。

總結(jié)

以上是生活随笔為你收集整理的ARM 嵌入式系统开发 - 软件设计与优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。