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

          新聞中心

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

          Thumb指令集之:Thumb數(shù)據(jù)處理指令

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

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

          11.4.10算術(shù)右移指令A(yù)SR(1)

          (1)編碼格式

          算術(shù)右移指令A(yù)SR(1)的編碼格式如圖11.16所示。

          圖11.16ASR(1)指令的編碼格式

          這種形式的算術(shù)右移指令可以方便的實(shí)現(xiàn)將一個(gè)寄存器的值除以一個(gè)常數(shù)。該常數(shù)是以2為底的冪。

          (2)指令的語法格式

          ASRRd>,Rm>,#immed_5>

          ①Rd>

          目的寄存器。用于存放指令操作的結(jié)果。

          ②Rm>

          操作數(shù)寄存器。存放將要被右移的數(shù)據(jù)。

          ③immed_5>

          指定右移的位數(shù)。該常數(shù)取值范圍為1~31。

          (3)指令操作的偽代碼

          Ifimmed_5==0

          CFlag=Rm[31]

          IfRm[31]==0then

          Rd=0

          Else/*Rm[31]==1*/

          Rd=0xffffffff

          Else/*immed_5>0*/

          CFlag=Rm[immed_5-1]

          Rd=RmArithmetic_shift_Rightimmed_5

          NFlag=Rd[31]

          ZFlag=ifRd==0then1else0

          VFlag=unaffected

          (4)對(duì)應(yīng)的指令

          MOVSRd>,Rm>,ASR#immed_5>

          注意

          v5以前的體系結(jié)構(gòu)版本中,沒有單獨(dú)的Thumb。在v6版本中已經(jīng)增加了位移指令,詳細(xì)信息請(qǐng)參加ARM體系結(jié)構(gòu)相關(guān)文檔。

          11.4.11算術(shù)右移指令A(yù)SR(2)

          (1)編碼格式

          算術(shù)右移指令A(yù)SR(2)的編碼格式如圖11.17所示。

          圖11.17ASR(2)指令的編碼格式

          此種形式的ASR指令的操作數(shù)均為寄存器。該指令根據(jù)指令的操作結(jié)果更新程序狀態(tài)字的標(biāo)志位。

          (2)指令的語法格式

          ASRRd>,Rs>

          ①Rd>

          存放指令的操作數(shù)和操作結(jié)果。

          ②Rs>

          指定操作數(shù)將要被移動(dòng)的位數(shù)。

          (3)指令操作的偽代碼

          IfRs[7:0]==0then

          CFlag=unaffected

          Rd=unaffected

          ElseifRs[7:0]32then

          CFlag=Rd[Rs[7:0]-1]

          Rd=Rdarithmetic_shift_RightRs[7:0]

          Else/*Rs[7:0]>=32*/

          CFlag=Rd[31]

          IfRd[31]==0then

          Rd=0

          Else/*Rd[31]==1*/

          Rd=0xffffffff

          NFlag=Rd[31]

          ZFlag=ifRd==0then1else0

          VFlag=unaffected

          (4)對(duì)應(yīng)的ARM指令

          MOVSRd>,Rd>,ASRRs>

          11.4.12位清零指令BIC

          (1)編碼格式

          位清零指令BIC的編碼格式如圖11.18所示。

          圖11.18BIC指令的編碼格式

          BIC指令將兩個(gè)寄存器的值按位做“異或”操作。該指令根據(jù)指令的執(zhí)行結(jié)果更新程序狀態(tài)字的標(biāo)志位。

          (2)指令的語法格式

          BICRd>,Rm>

          ①Rd>

          存放指令的操作數(shù)和操作結(jié)果。

          ②Rm>

          操作數(shù)寄存器,該寄存器中的數(shù)據(jù)的反碼將會(huì)和Rd>中的值做“與”操作。

          (3)指令操作的偽代碼

          Rd=RdANDNOTRm

          NFlag=Rd[31]

          ZFlag=ifRd==0then1else0

          CFlag=unaffected

          VFlag=unaffected

          (4)對(duì)應(yīng)的ARM指令

          BICSRd>,Rd>,Rm>



          評(píng)論


          相關(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); })();