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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM指令中的內(nèi)存訪問指令的總結(jié)

          ARM指令中的內(nèi)存訪問指令的總結(jié)

          作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          內(nèi)存訪問指令

          LDR,STR,LDM,STM

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

          LDR:表示從內(nèi)存中讀取數(shù)據(jù)到寄存器當(dāng)中,如ldr r0,[r2];表示從r2指向的內(nèi)存單元讀取數(shù)據(jù)保存到r0當(dāng)中

          STR:表示把寄存器當(dāng)中的數(shù)據(jù)保存到內(nèi)存單元當(dāng)中,如str r1,[r2];表示把r1中的值保存到地址為r2指向的內(nèi)存單元當(dāng)中

          LDM/STM是指內(nèi)存訪問指令,用一條指令就可以讀取多個(gè)數(shù)據(jù),格式如下

          LDM{cond} {!} {^}

          STM{cond} {!} {^}

          其中cond代表?xiàng)l件碼

          1.ia (incrementafter):事后遞增方式

          2.ib (incrementbefore):事先遞增方式

          3.da(decrementafter):事后遞減方式

          4.db(decrementbefore):事先遞減方式

          rn保存內(nèi)存單元的地址,如果加上!,表示,使用后更新,等于下一個(gè)內(nèi)存單元的地址

          表示寄存器列表,最后的^表示如果register_list當(dāng)中有pc寄存器,它表示指令執(zhí)行后,將spsr的值自動到cpsr當(dāng)中,常用于中斷函數(shù)的返回;如果register_list當(dāng)中沒有pc,^表示操作的是用戶模式下的寄存器,而不是當(dāng)前特權(quán)模式下的寄存器.指令中的對應(yīng)關(guān)系,編號低的寄存對應(yīng)內(nèi)存中低地址的單元,高編號的寄存器對應(yīng)高內(nèi)存地址.

          irq_handler:sublr, lr, #4               ;計(jì)算返回地址stmdbsp!, {r0-r12, lr}      ;事前遞減,!使得sp = sp -14*4,lr保存在高地址當(dāng)中sp, r0保存在低地址當(dāng)中 sp - 14*4ldrr2, = int_handler        ;中斷處理函數(shù)blr2                        ;真實(shí)中斷處理ldrlr, = int_return;        ;從中斷中返回irq_retrun:ldmiasp!, {r0-r12, lr}^     ;^將spsr拷貝到cpsr,!使得sp = sp + 14*4,r0中的值是低地下中的sp,lr中的得到是高地址sp +14*4指向的值


          關(guān)鍵詞: ARM指令內(nèi)存訪問指

          評論


          技術(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); })();