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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 指令+s對cpsr中標志位的影響

          指令+s對cpsr中標志位的影響

          作者: 時間:2016-11-20 來源:網(wǎng)絡 收藏
          標志位的含義如下:

          所有ARM數(shù)據(jù)處理指令的乘法指令均可選擇使用S后綴,并影響狀態(tài)標志位。而其它指令一般不允許加S后綴,如B 、LDR、SWI、MRS等。

          N運算結(jié)果的最高位反映在該標志位。對于有符號二進制補碼,結(jié)果為負數(shù)時N=1,結(jié)果為正數(shù)或零時N=0;
          例如:執(zhí)行movs r0,#0x7FFFFFFF后N=0;因為R0最高位為0
          執(zhí)行movs r0,#0x80000000后N=1;因為R0最高位為1
          執(zhí)行CMP r0,r0后N=0;因為R0-R0=0x00000000;
          故N一般看目標寄存器的最高位,即N = Rd[31]。

          Z指令結(jié)果為0時Z=1(通常表示比較結(jié)果“相等”),否則Z=0;
          例如:執(zhí)行CMP r0,r0后Z=1
          執(zhí)行MOVS R0,#0后Z=1
          故Z一般看目標寄存器的值是否為0,Rd=0時Z=1,否則Z=0。

          C當進行加法運算(包括CMN指令),并且最高位產(chǎn)生進位時C=1,否則C=0。當進行減法運算(包括CMP 指令),
          并且最高位產(chǎn)生借位時C=0,否則C=1。對于結(jié)合移位操作的非加法/減法指令,C為從最高位最后移出的值,
          其它指令C通常不變;
          例如:執(zhí)行 mov r0,#0xF0000000
          ADDS R0,R0,R0
          后C=1;
          執(zhí)行 SUBS R2,R2,R2后C=1,因為R2-R2=0不需要借位。
          執(zhí)行 CMP R3,R3后C=1;
          執(zhí)行MOV R1,0x80000000
          movs r0,r1 ,lsr #32
          后C=1;
          執(zhí)行mov r0,#0x10
          mov r1,#0x7FFFFFFF
          subs r3,R0,r1 ,lsr #1
          后C=0;
          總之,一般情況下加法進位,減法無借位時C=1;對于結(jié)合移位操作的非加/減法指令,C為最后移出的值。

          V當進行加法/減法運算,并且發(fā)生有符號溢出時V=1,否則V=0,其它指令V通常不變。
          例如:執(zhí)行mov r1,#0x80000000
          adds r1,r1,r1 后V=1;
          執(zhí)行 mov r1,#0x70000000
          adds r1,r1,r1或 CMN R1,R1 后V=1;
          執(zhí)行 LDR R0,=0x8000000
          LDR R1,=0x7FFFFFFF
          CMP R0,R1 后V=1;
          總之,兩個負數(shù)運算結(jié)果第31位為0,則V=1
          兩個正數(shù)運算結(jié)果第31位為1,則V=1。

          另外THUMB指令一般不需要S后綴,便能影響狀態(tài)標志位。
          如在THUMB狀態(tài)下下面兩條指令相同
          movs r0,#0x00
          mov r0,#0x00

          本文引用地址:http://www.ex-cimer.com/article/201611/318728.htm
          MOV一般不影響CPSR, 除非執(zhí)行類似MOV pc, lr,效果上等同于BX lr
          MOVS總是會影響CPSR, 包括N,Z,C標志位
          執(zhí)行MOV pc, lr,可能會影響到T標志位,執(zhí)行MOVS pc, lr時,CPSR會被SPSR覆蓋(內(nèi)核態(tài))

          在Thumb代碼里不能使用B跳轉(zhuǎn)到ARM代碼,因為T標志不會切換,即使跳到ARM代碼,
          也會按照Thumb方式來執(zhí)行,BX是跳特殊指令,會根據(jù)目標寄存器地址來切換T標志。


          關鍵詞: 指令+scpsr標志

          評論


          相關推薦

          技術(shù)專區(qū)

          關閉
          看屁屁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); })();