久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > Thumb指令集之:Thumb數據處理指令

Thumb指令集之:Thumb數據處理指令

作者: 時間:2013-09-30 來源:網絡 收藏

本文引用地址:http://www.cqxgywz.com/article/257041.htm

11.4.19邏輯左移指令LSL(2)

(1)編碼格式

邏輯左移指令LSL(2)的編碼格式如圖11.25所示。

圖11.25LSL(2)指令的編碼格式

邏輯左移指令LSL(2)可以實現以2為底的冪的乘法。進行移位后空出的位添0并根據指令的操作結果更新程序狀態寄存器的標志位。

(2)指令的語法格式

LSLRd>,Rs>

①Rd>

操作數寄存器,包含被移位的值并保存指令的執行結果。

②Rs>

包含邏輯左移位數的寄存器。

(3)指令操作的偽代碼

ifRs[7:0]==0

CFlag=unaffected

Rd=unaffected

ElseifRs[7:0]32then

CFlag=Rd[32–Rs[7:0]]

Rd=Rdlogical_shift_leftRs[7:0]

ElseifRs[7:0]==32then

CFlag=Rd[0]

Rd=0

ElseifRs[7:0]==32then

CFlag=Rd[0]

Rd=0

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

CFlag=0

Rd=0

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

VFlag=unaffected

(4)對應的指令

MOVSRd>,Rd>,LSLRs>

11.4.20邏輯右移指令LSR(1)

(1)編碼格式

邏輯左移指令LSR(1)的編碼格式如圖11.26所示。

圖11.26LSR(1)指令的編碼格式

邏輯右移指令LSR(1)可以實現以2為底的冪做除數的除法。進行移位后空出的位添0,并根據指令的執行結果更新程序狀態寄存器的標志位。

(2)指令的語法格式

LSRRd>,Rm>,#immed_5>

①Rd>

目的寄存器。存儲指令的操作結果。

②Rm>

操作數寄存器。該寄存器保存的數據將進行右移操作。

③immed_5>

邏輯右移位數,范圍為0~31。

(3)指令操作的偽代碼

ifimmed_5==0

CFlag=Rd[31]

Rd=0

Else/*immed_5>0*/

CFlag=Rd[immed_5-1]

Rd=RmLogial_shift_rightimmed_5

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

VFlag=unaffected

(4)對應的指令

MOVSRd>,Rm>,LSR#immed_5>

11.4.21邏輯右移指令LSR(2)

(1)編碼格式

邏輯左移指令LSR(2)的編碼格式如圖11.27所示。

圖11.27LSR(2)指令的編碼格式

邏輯右移指令LSR(2)可以實現以2為底的冪做除數的無符號除法。進行移位后空出的位添0,并根據指令的操作結果更新程序狀態寄存器的標志位。

(2)指令的語法格式

LSRRd>,Rs>

①Rd>

操作數寄存器,包含被移位的值并保存指令的執行結果。

②Rs>

包含邏輯右移位數的寄存器。

(3)指令操作的偽代碼

ifRs[7:0]==0

CFlag=unaffected

Rd=unaffected

ElseifRs[7:0]32then

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

Rd=Rdlogical_shift_RightRs[7:0]

ElseifRs[7:0]==32then

CFlag=Rd[31]

Rd=0

ElseifRs[7:0]==32then

CFlag=Rd[0]

Rd=0

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

CFlag=0

Rd=0

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

VFlag=unaffected

(4)對應的指令

MOVSRd>,Rd>,LSRRs>



評論


相關推薦

技術專區

關閉