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

          新聞中心

          ARM 匯編&ARM 指令集

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          ARM 處理器尋址方式

          1、寄存器尋址

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

          操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號,指令執(zhí)行時直接取出寄存器值操作

          MOV R1,R2 ;R2 -> R1
          SUB R0,R1,R2 ;R1 - R2 -> R0

          2、立即尋址

          地址碼部分就是操作數(shù),(操作數(shù))立即數(shù)就在指令中

          SUBS R0,R0,#1 ;R0 – 1 -> R0
          MOV R0,#0xff00 ;0xff00 -> R0

          3、寄存器偏移尋址

          MOV R0,R2,LSL #3 ;R2 的值左移3 位,結(jié)果放入R0,即R0 = R2 * 8
          ANDS R1,R1,R2,LSL R3 ;R2 的值左移R3 位,然后和R1 相與操作,結(jié)果放入R1

          4、寄存器間接尋址

          寄存器為操作數(shù)的地址指針

          LDR R1,[R2] ;將R2 中的數(shù)值作為地址,取出此地址中的數(shù)據(jù)保存在R1 中
          SWP R1,R1,[R2];將如中的數(shù)值作為地址,取出此地址中的數(shù)值與R1 中的值交換

          5、基址尋址

          將基址寄存器的內(nèi)容與偏移量相加,形成操作數(shù)的有效地址,用于訪問寄存器附近存儲單元

          LDR R2,[R3,#0x0F] ;將R3 中的數(shù)值加0x0F 作為地址,取出此地址的數(shù)值保存在R2 中
          STR R1,[R0,#-2] ;將R0 中的數(shù)值減2 作為地址,把R1 中的內(nèi)容保存到此地址位置

          6、多寄存器尋址

          多寄存器尋址就是一次可以傳送幾個寄存器值,允許一條指令傳送 16 個寄存器的任何子集或所有寄存器。

          LDMIA R1!,{R2-R7,R12} ;將R1 單元中的數(shù)據(jù)讀出到R2-R7,R12,R1 自動加1
          STMIA R0!,{R3-R6,R10};將R3-R6,R10 中的數(shù)據(jù)保存到R0 指向的地址,R0 自動加1

          7、堆棧尋址

          堆棧是特定順序進行存取的存儲區(qū),操作順序分為“后進先出”和“先進后出”,
          堆棧尋址時隱含的,它使用一個專門的寄存器(堆棧指針)指向一塊存儲區(qū)域(堆棧),
          指針所指向的存儲單元就是堆棧的棧頂。存儲器堆??煞譃閮煞N:
          向上生長:向高地址方向生長,稱為遞增堆棧
          向下生長:向低地址方向生長,稱為遞減堆棧
          堆棧指針指向最后壓入的堆棧的有效數(shù)據(jù)項,稱為滿堆棧;堆棧指針指向下一個要
          放入的空位置,稱為空堆棧。這樣就有4 中類型的堆棧表示遞增和遞減的滿堆棧和空堆
          棧的各種組合。
          滿遞增:堆棧通過增大存儲器的地址向上增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項的
          最高地址。指令如LDMFA,STMFA 等。
          空遞增:堆棧通過增大存儲器的地址向上增長,堆棧指針指向堆棧上的第一個空
          位置。指令如LDMEA,STMEA 等。



          關(guān)鍵詞: ARM匯編指令

          評論


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