<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匯編指令的條件執(zhí)行及其他相關(guān)細(xì)節(jié)

          ARM匯編指令的條件執(zhí)行及其他相關(guān)細(xì)節(jié)

          作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
          ARM指令在機(jī)器中的表示格式用32位的二進(jìn)制數(shù)表示

          例如 ADDEQS R0,R1,#8 表示為下表

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

          31~28

          27~25

          24~21

          20

          19~16

          15~12

          11~0

          0000

          001

          0100

          1

          0001

          0000

          000000001000

          cond

          opcode

          Rn

          Rd

          Op2

          ARM指令一般分為5個(gè)域:

          第一個(gè)域就是跟條件執(zhí)行相關(guān)的cond,即條件碼域

          第二個(gè)是指令代碼域,即 opcode ,

          第三個(gè)域是地址基址Rn,即第一個(gè)操作數(shù),為寄存器

          第四個(gè)域是目標(biāo)或源寄存器Rd,

          第五個(gè)域是地址偏移或操作寄存器、操作數(shù)區(qū),即Op2

          上述指令的5個(gè)域?yàn)?0000 0010 1001 0001 0000 0000 0000 1000

          16進(jìn)制代碼為0291008H ,指令功能是將R1和8相加,結(jié)果放入R0中

          用助記符表示的ARM指令一般格式如下

          {}{S},{,} 其中{}里的是可以省略的

          如上述的指令 ADDEQS R0,R1,#8

          opcode是ADD ,cond是EQ,S代表的是第20位,{S}決定指令的執(zhí)行結(jié)果是否影響CPSR的值,本例為1

          Rd為R0,Rn為R1,op2為8

          助記符中的{S}位,即32位機(jī)器碼的第20位,在助記符中通??梢匀或!或空

          取S的情況已經(jīng)說(shuō)了,加上S影響CPSR的值

          加上!后綴,指令執(zhí)行后,基址寄存器中的地址將發(fā)生如下變化:

          基址寄存器中的值(指令執(zhí)行后)=指令執(zhí)行前的值+地址偏移量

          如 LDR R3,[R0,#4]! , 指令的結(jié)果將R0加4作為地址指針,把這個(gè)指針?biāo)赶虻牡刂穯卧尜A的數(shù)據(jù)讀入R3,并且把R0+4的值送到R0中

          使用!后綴必須注意以下事項(xiàng):

          1、 !后綴必須緊跟在地址表達(dá)式后面,而地址表達(dá)式要有明確的地址偏移量

          2、!后綴不能用于R15(PC)的后面

          3、!后綴當(dāng)用在單個(gè)地址寄存器后面時(shí),必須確保這個(gè)寄存器有隱性的偏移量,例如

          STMDB R1!{R3,R5,R7} 此時(shí)的地址基址寄存器的隱性偏移量為4

          好了 最后講正題,條件的指令執(zhí)行

          前面提到cond有4位, [31:28],一共有16種組合 ,跟CPSR配合決定指令是否執(zhí)行

          如指令A(yù)DDEQ R4,R3,#1 ,帶EQ標(biāo)志位

          只有當(dāng)CPSR中的Z置位才執(zhí)行該指令

          又如前面的例子 ADDEQS R0,R1,#8 ,也是只有當(dāng)CPSR中的Z置位才執(zhí)行該指令

          條件后綴和S后綴的關(guān)系如下

          1、 如果既有條件后綴又有S后綴,則書寫時(shí)S排在后面 如ADDEQS R1,R0,R2

          該指令在Z=1時(shí)執(zhí)行,將R0+R2的值放入R1,同時(shí)刷新條件標(biāo)志位

          2、條件后綴是要測(cè)試條件標(biāo)志位,而S后綴是要刷新條件標(biāo)志位

          3、條件后綴要測(cè)試的是執(zhí)行前的標(biāo)志位,而S后綴是依據(jù)指令的結(jié)果改變條件標(biāo)志。



          關(guān)鍵詞: ARM匯編指令條件執(zhí)

          評(píng)論


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