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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM處理器指令立即尋址的限制

          ARM處理器指令立即尋址的限制

          作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
          ARM處理器的匯編語(yǔ)言中,對(duì)指令語(yǔ)法格式中的常數(shù)表達(dá)式有這樣的規(guī)定:“該常數(shù)必須對(duì)應(yīng)8位位圖,即常數(shù)是由一個(gè)8位的常數(shù)循環(huán)移位偶數(shù)位得到的。”

          給定一個(gè)立即數(shù),判斷其是否合法可以分三步:首先將給定的立即數(shù)寫(xiě)成32位二進(jìn)制的形式;然后看能不能用一個(gè)8位的二進(jìn)制數(shù)包括所有含1的部分,如不能則非法;最后看這個(gè)8位二進(jìn)制數(shù)能不能循環(huán)右移偶數(shù)位得到給定的立即數(shù),不能數(shù)則非法。

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

          0xff=00000000000000000000000011111111:相當(dāng)于8位二進(jìn)制11111111循環(huán)右移0位得到,合法;

          0x104=00000000000000000000000100000100:相當(dāng)于8位二進(jìn)制01000001循環(huán)右移2位得到,合法;

          0x101=00000000000000000000000100000001:包含所有1的部分是100000001,無(wú)法用一個(gè)8位二進(jìn)制表示,非法;

          0x102=00000000000000000000000100000010:包含所有1的部分是10000001,但10000001只能循環(huán)右移奇數(shù)位得到給定的數(shù),非法;

          0xfC000002=11111100000000000000000000000010:相當(dāng)于8位二進(jìn)制10111111循環(huán)右移6位得到,合法。

          0x8000007E=10000000000000000000000001111110:包含所有1的部分是11111101,但10000001只能循環(huán)右移奇數(shù)位得到給定的數(shù),非法。

          總結(jié):第一,判斷一個(gè)數(shù)是否符合8位位圖的原則,首先看這個(gè)數(shù)轉(zhuǎn)換成二進(jìn)制后1的個(gè)數(shù)是否不超過(guò)8個(gè),如果不超過(guò)8個(gè),再看這n個(gè)1(n<=8)是否能同時(shí)放到8個(gè)二進(jìn)制位中,如果可以放進(jìn)去,再看這八個(gè)二進(jìn)制位是否可以循環(huán)右移偶數(shù)位得到起初被判斷的那個(gè)數(shù)值,如果可以,則此數(shù)值即為符合8位位圖原理,否則,不符合。第二,用12位的編碼來(lái)表示一個(gè)任意的32位數(shù)是不可能的,只能通過(guò)循環(huán)右移八位二進(jìn)制數(shù)偶數(shù)位來(lái)得到一部分32位數(shù),其余的無(wú)法表示的32位數(shù),只有通過(guò)其它途徑獲得了,比如0xffffff00,可以通過(guò)0x000000ff按位取反得到。



          關(guān)鍵詞: ARM處理器指令立即尋

          評(píng)論


          技術(shù)專(zhuān)區(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); })();