Thumb指令集之:Thumb數(shù)據(jù)處理指令
11.4.31減法指令SUB(1)
(1)編碼格式
減法指令SUB(1)的編碼格式如圖11.37所示。
圖11.37SUB(1)指令的編碼格式
SUB(1)指令從指定寄存器減去3位立即數(shù)(取值范圍為0~8),并把指令的操作結(jié)果保存到寄存器,同時根據(jù)結(jié)果更新CPSR中相應(yīng)的條件標志位。
(2)指令的語法格式
SUBRd>,Rn>,#immed_3>
①Rd>
目的寄存器,存放指令的操作結(jié)果。
②Rn>
被減數(shù)寄存器,包含減法操作的被減數(shù)。
③immed_3>
作為減數(shù)的立即數(shù),該立即數(shù)的取值范圍為0~8。
(3)指令操作的偽代碼
Rd=Rn–immed_3
NFlag=Rd[31]
ZFlag=ifRd==0then1else0
CFlag=NOTBorrowFrom(Rn–immed_3)
VFlag=OverflowFrom(Rn–immed_3)
(4)對應(yīng)的ARM指令
SUBSRd>,Rn>,#immed_3>
11.4.32減法指令SUB(2)
(1)編碼格式
減法指令SUB(2)的編碼格式如圖11.38所示。
SUB(2)指令從指定寄存器減去8位立即數(shù)(即,取值范圍為0~256),并把指令的操作結(jié)果保存到寄存器,同時根據(jù)結(jié)果更新CPSR中相應(yīng)的條件標志位。
圖11.38SUB(2)指令的編碼格式
(2)指令的語法格式
SUBRd>,#immed_8>
①Rd>
第一個源操作數(shù)所在的寄存器,存放減法操作的被減數(shù),同時將減法操作的執(zhí)行結(jié)果保存到該寄存器。
②immed_8>
8位立即數(shù),即減法操作的減數(shù),取值范圍為0~255。
(3)指令操作的偽代碼
Rd=Rd–immed_8
NFlag=Rd[31]
ZFlag=ifRd==0then1else0
CFlag=NOTBorrowFrom(Rn–immed_8)
VFlag=OverflowFrom(Rn–immed_8)
(4)對應(yīng)的ARM指令
SUBSRd>,Rd>,#immed_8>
11.4.33減法指令SUB(3)
(1)編碼格式
減法指令SUB(3)的編碼格式如圖11.39所示。
圖11.39SUB(3)指令的編碼格式
SUB(3)指令將指定寄存器的值和另一個寄存器表示的值做減法運算,并根據(jù)指令的操作結(jié)果更新狀態(tài)寄存器的標志位。
(2)指令的語法格式
SUBRd>,Rn>,Rm>
①Rd>
目的寄存器,存放指令操作的結(jié)果。
②Rn>
源寄存器,存放第一個操作數(shù),即減法運算的被減數(shù)。
③Rm>
源寄存器,存放第二個操作數(shù),即減法運算的減數(shù)。
(3)指令操作的偽代碼
Rd=Rd–Rm
NFlag=Rd[31]
ZFlag=ifRd==0then1else0
CFlag=NOTBorrowFrom(Rn–Rm)
VFlag=OverflowFrom(Rn–Rm)
(4)對應(yīng)的ARM指令
SUBSRd>,Rn>,Rm>
評論