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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > ARM指令尋址方式之: 數(shù)據(jù)處理指令的尋址方式

          ARM指令尋址方式之: 數(shù)據(jù)處理指令的尋址方式

          作者: 時間:2013-09-13 來源:網(wǎng)絡 收藏

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

          2.寄存器方式

          寄存器的值可以被直接用于數(shù)據(jù)操作指令,如:

          MOV r2,r0 ;r0的值送r2

          ADD r4,r3,r2 ;r2加r3,結(jié)果送r4

          CMP r7,r8 ;比較r7和r8的值

          3.寄存器移位方式

          寄存器的值在被送到ALU之前,可以事先經(jīng)過桶形移位寄存器的處理。預處理和移位發(fā)生在同一周期內(nèi),所以有效的使用移位寄存器,可以增加代碼的執(zhí)行效率。

          具體的移位(或者循環(huán)移位)方式有下面幾種。

          · ASR:算術(shù)右移。

          · LSL:邏輯左移。

          · LSR:邏輯右移。

          · ROR:循環(huán)右移。

          · RRX:擴展的循環(huán)右移。

          以上5種移位方式,移位值均可以由立即數(shù)或寄存器指定。下面是一些在指令中使用了移位操作的例子。

          ADD r2,r0,r1,LSR #5

          MOV r1,r0,LSL #2

          RSB r9,r5,r5,LSL #1

          SUB r1,r2,r0,LSR #4

          MOV r2,r4,ROR r0

          4.1.4 尋址方式分類詳解

          的尋址方式根據(jù)shifter_operand>的不同,相應的分為11種。詳見表4.1。下面對各類尋址方式進行詳細說明。

          1.#immediate>

          (1)編碼格式

          指令的編碼格式如圖4.2所示。

          圖4.2 ——立即數(shù)尋址編碼格式

          立即數(shù)尋址為提供了一個可直接操作的立即數(shù)。立即數(shù)的生成方法見前面章節(jié)介紹。如果移位值為0,則移位進位值為程序狀態(tài)寄存器CPSR的C標志位;否則,為32-bit立即數(shù)的bit[31]。

          (2)操作偽代碼

          Shifter_operand = immed_8 Rotate_Right (rotate_imm*2)

          if rotate_imm == 0 then

          shifter_carry_out = C flag

          else /* rotate_imm != 0*/

          shifter_carry_out = shifter_operand[31]

          (3)說明

          ① 并不是所有的32-bit立即數(shù)都是可以使用的合法立即數(shù)。只有那些通過將一個8-bit的立即數(shù)循環(huán)右移偶數(shù)位可以得到的立即數(shù)才可以在指令中使用。

          ② 有些立即數(shù)可以通過不止一種方法得到。由于立即數(shù)的構(gòu)造方法中移位包含了循環(huán)操作,而循環(huán)移位操作會影響CPSR的條件標志位C。因此,同一個合法的立即數(shù)由于采用了不同的編碼方式,將使這些指令的執(zhí)行產(chǎn)生不同的結(jié)果,這是不能允許的。匯編器按照下面的規(guī)則來生成立即數(shù)的編碼。

          · 當立即數(shù)數(shù)值在0和0xFF范圍時,令immed_8=immediate>,immed_4=0。

          · 其他情況下,匯編編譯器選擇使用immed_4數(shù)值最小的編碼方式。

          ③ 為了更精確地控制立即數(shù)的生成,可以使用下面的語法格式控制立即數(shù)的生成。

          #immed_8>,rotate_amout>

          其中,rotate_amout> = 2*rotate_imm

          (4)舉例

          SUBS r0,r0,#1 ;寄存器r0中的數(shù)值減1,結(jié)果保存到r0

          MOV r0,#0xff00 ; 0xff00 → r0 ;將立即數(shù)0xff00放入r0保存



          評論


          相關(guān)推薦

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