色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.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)過(guò)桶形移位寄存器的處理。預(yù)處理和移位發(fā)生在同一周期內(nèi),所以有效的使用移位寄存器,可以增加代碼的執(zhí)行效率。

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

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

          · LSL:邏輯左移。

          · LSR:邏輯右移。

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

          · RRX:擴(kuò)展的循環(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 尋址方式分類(lèi)詳解

          的尋址方式根據(jù)shifter_operand>的不同,相應(yīng)的分為11種。詳見(jiàn)表4.1。下面對(duì)各類(lèi)尋址方式進(jìn)行詳細(xì)說(shuō)明。

          1.#immediate>

          (1)編碼格式

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

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

          立即數(shù)尋址為提供了一個(gè)可直接操作的立即數(shù)。立即數(shù)的生成方法見(jiàn)前面章節(jié)介紹。如果移位值為0,則移位進(jìn)位值為程序狀態(tài)寄存器CPSR的C標(biāo)志位;否則,為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)說(shuō)明

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

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

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

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

          ③ 為了更精確地控制立即數(shù)的生成,可以使用下面的語(yǔ)法格式控制立即數(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保存



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉