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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于ARM9中的協(xié)處理器CP15及MCR/MRC指令

          關(guān)于ARM9中的協(xié)處理器CP15及MCR/MRC指令

          作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          在基于ARM的嵌入式應(yīng)用系統(tǒng)中,存儲系統(tǒng)通常是通過系統(tǒng)控制協(xié)處理器CP15完成的。CP15包含16個32位的寄存器,其編號為0~15。

          訪問CP15寄存器的指令

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

          MCRARM寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送

          MRC協(xié)處理器寄存器到ARM寄存器的數(shù)據(jù)傳送

          MCR指令和MRC指令只能在處理器模式為系統(tǒng)模式時執(zhí)行,在用戶模式下執(zhí)行MCR指令和MRC指令將會觸發(fā)未定義指令的異常中斷。

          MCR指令

          MCR指令將ARM處理器的寄存器中的數(shù)據(jù)傳送到協(xié)處理器寄存器中。如果協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義的指令異常中斷。

          指令語法格式

          MCR{}

          ,< opcode_1>,,,{,}

          MCR{} p15,0,,,{,}

          其中,為指令執(zhí)行的條件碼。當(dāng)忽略時指令為無條件執(zhí)行。

          < opcode_1>為協(xié)處理器將執(zhí)行的操作的操作碼。對于CP15協(xié)處理器來說,< opcode_1>永遠(yuǎn)為0b000,當(dāng)< opcode_1>不為0b000時,該指令操作結(jié)果不可預(yù)知。

          作為源寄存器的ARM寄存器,其值將被傳送到協(xié)處理器寄存器中。

          作為目標(biāo)寄存器的協(xié)處理器寄存器,其編號可能是C0,C1,…,C15。

          兩者組合決定對協(xié)處理器寄存器進(jìn)行所需要的操作,如果沒有指定,則將為為C0,opcode_2為0,否則可能導(dǎo)致不可預(yù)知的結(jié)果。

          Function Data instruction Invalidate TLB(s) SBZ MCR p15,0,Rd,c8,c7,0 Invalidate I TLB SBZ MCR p15,0,Rd,c8,c5,0 Invalidate I TLB single entry (using MVA) MVA format MCR p15,0,Rd,c8,c5,1 Invalidate D TLB SBZ MCR p15,0,Rd,c8,c6,0 Invalidate D TLB single entry (using MVA) MVA format MCR p15,0,Rd,c8,c6,1



          評論


          技術(shù)專區(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); })();