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

          新聞中心

          ARM中的MOV指令

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          ARM中MOV指令格式是這樣的

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

          op2是占了12位,其中bit11-bit8是移位數(shù)(rotate),bit7-0是一個8位的立即數(shù)(imm),MOV Rn, op2,執(zhí)行之后,Rn=op2 >> (rotate * 2),這里的移位是循環(huán)右移,這就決定了MOV指令不是所有的立即數(shù)都能表示的,以下是幾個例子:

          1、mov r3, #0x56000000

          雖然0x56000000是一個32位的數(shù),但是可以找到這么一個8位立即數(shù),通過右移得到,看下機器碼e3a03456,展開成二進制,對照下格式

          1110 0011 1010 0000 0011 0100 0101 0110

          cond[31:28]=1110

          [27:26]=00

          L[25]=1,代表op2是一個立即數(shù)

          OpCode[24:21]=1101

          S[20]=0

          Rn[19:16]=0000

          Rd[15:12]=0011,R3

          Op2[11:8]=0100,右移4 * 2位

          Op2[7:0]=0101 0110,8位立即數(shù),0x56

          首先要將0x56擴展成32位的無符號數(shù),0x00000056,然后循環(huán)右移8位,就得到了0x56000000

          2、mov r3, #0x56000014

          0x56000014是無法通過移位來得到的,這時編譯器會報錯,C語言編寫的程序,編譯器會這樣來處理:

          mov r3, #0x56000000

          add r3, r3, #0x14

          代替mov的另外一條指令就是ldr,或許會更方便點。

          看了2440的datasheet,最令人費解的就是rotate了,習(xí)慣了C語言里的邏輯右移,把循環(huán)右移和邏輯右移混淆了。



          關(guān)鍵詞: ARM中MOV指

          評論


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