<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM Cortex-M3 學(xué)習(xí)筆記(4-5)

          ARM Cortex-M3 學(xué)習(xí)筆記(4-5)

          作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏
          最近在學(xué)ARMCortex-M3, 找了本號(hào)稱(chēng)很經(jīng)典的書(shū)“An Definitive Guide to The ARM Cortex-M3”在看。這個(gè)系列學(xué)習(xí)筆記其實(shí)就是在學(xué)習(xí)這本書(shū)的過(guò)程中做的讀書(shū)筆記。

          Barrier 指令

          DMB, DSB, ISB

          本文引用地址:http://www.ex-cimer.com/article/201611/318833.htm

          這三個(gè)指令的區(qū)別如下表所示。

          指令名

          功能描述

          DMB

          數(shù)據(jù)存儲(chǔ)器隔離。DMB指令保證: 僅當(dāng)所有在它前面的存儲(chǔ)器訪(fǎng)問(wèn)操作都執(zhí)行完畢后,才提交(commit)在它后面的存儲(chǔ)器訪(fǎng)問(wèn)操作。

          DSB

          數(shù)據(jù)同步隔離。比DMB嚴(yán)格: 僅當(dāng)所有在它前面的存儲(chǔ)器訪(fǎng)問(wèn)操作都執(zhí)行完畢后,才執(zhí)行在它后面的指令(亦即任何指令都要等待存儲(chǔ)器訪(fǎng)問(wèn)操作——譯者注)

          ISB

          指令同步隔離。最嚴(yán)格:它會(huì)清洗流水線(xiàn),以保證所有它前面的指令都執(zhí)行完畢之后,才執(zhí)行它后面的指令。

          其他一些有用的指令

          Cortex-M3中支持的指令很多。這里不可能全都介紹到。下面就再提幾個(gè)我認(rèn)為比較有特色的指令來(lái)介紹。

          REV, REVH,REV16以及REVSH

          REV反轉(zhuǎn)32位整數(shù)中的字節(jié)序,REVH則以半字為單位反轉(zhuǎn),且只反轉(zhuǎn)低半字。

          REVSH在REVH的基礎(chǔ)上,還把轉(zhuǎn)換后的半字做帶符號(hào)擴(kuò)展。

          這幾條指令主要用于大端系統(tǒng)與小端系統(tǒng)相互通訊時(shí)的字節(jié)序轉(zhuǎn)換。

          RBIT指令

          RBIT是按位反轉(zhuǎn)的,相當(dāng)于把32位整數(shù)的二進(jìn)制表示法水平旋轉(zhuǎn)180度。其格式為:

          RBIT.W Rd, Rn

          看到按位反轉(zhuǎn),我就想到了FFT計(jì)算的蝶形運(yùn)算。那里是最需要這種指令的。

          TBB,TBH 指令

          可以用于C語(yǔ)言中的switch case 結(jié)構(gòu)的匯編。具體的用法這里不詳細(xì)介紹了,需要用的還是看書(shū)吧。



          關(guān)鍵詞: ARMCortex-M

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();