<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

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

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

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

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

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

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

在Thumb代碼里不能使用B跳轉到ARM代碼,因為T(mén)標志不會(huì )切換,即使跳到ARM代碼,
也會(huì )按照Thumb方式來(lái)執行,BX是跳特殊指令,會(huì )根據目標寄存器地址來(lái)切換T標志。


關(guān)鍵詞: 指令+scpsr標志

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>