ARM指令集的移位操作

2021-07-31 22:54:32 字數 1856 閱讀 5830

arm 微處理器內嵌的桶型移位器(barrel shifter),支援資料的各種移位操作,移位操作在 arm 指令集中不作為單獨的指令使用,它只能作為指令格式中是乙個字段,在組合語言中表示為指令中的選項。

例如,資料處理指令的第二個運算元為暫存器時,就可以加入移位操作選項對它進行各種移位操作。移位操作包括如下6 種型別,

asl 和 lsl 是等價的,可以自由互換:

— lsl 邏輯左移

— lsr 邏輯右移

— asl 算術左移等價於lsl

— asr 算術右移

— ror 迴圈右移

— rrx 帶擴充套件的迴圈右移

1、lsl(或asl)操作

lsl(或asl)操作的格式為:

通用暫存器, lsl (或 asl ) 運算元

lsl(或asl)可完成對通用暫存器中的內容進行邏輯(或算術)的左移操作,按運算元

所指定的數量向左移位,低位用零來填充。其中,運算元可以是通用暫存器,也可以是立即數( 0 ~ 31 )。

操作示例:

mov r0, r1, lsl#2 ;將 r1 中的內容左移兩位後傳送到 r0 中。

2、lsr 操作

lsr 操作的格式為:

通用暫存器, lsr 運算元

lsr 可完成對通用暫存器中的內容進行右移的操作,按運算元所指定的數量向右移位,左端用零來填充。其中,運算元可以是通用暫存器,也可以是立即數( 0 ~ 31 )。

操作示例:

mov r0, r1, lsr#2 ;將 r1 中的內容右移兩位後傳送到 r0 中,左端用零來填充。

3、asr 操作

asr 操作的格式為:

通用暫存器, asr 運算元

asr 可完成對通用暫存器中的內容進行右移的操作,按運算元所指定的數量向右移位,左端用第31 位的值來填充。其中,運算元可以是通用暫存器,也可以是立即數( 0 ~ 31 )。

操作示例:

mov r0, r1, asr#2 ;將 r1 中的內容右移兩位後傳送到 r0 中,左端用第 31 位的值來填充。

4、ror 操作

ror 操作的格式為:

通用暫存器, ror 運算元

ror 可完成對通用暫存器中的內容進行迴圈右移的操作,按運算元所指定的數量向右迴圈移位, 左端用右端移出的位來填充。其中,運算元可以是通用暫存器,也可以是立即數( 0 ~ 31 )。顯然,當進行 32 位的迴圈右移操作時,通用暫存器中的值不改變。

操作示例:

mov r0, r1, ror#2 ;將 r1 中的內容迴圈右移兩位後傳送到 r0 中。

5、rrx 操作

rrx 操作的格式為:

通用暫存器, rrx 運算元

rrx 可完成對通用暫存器中的內容進行帶擴充套件的迴圈右移的操作,按運算元所指定的數量向右迴圈移位,左端用進製標誌位 c 來填充。其中,運算元可以是通用暫存器,也可以是立即數( 0 ~ 31 )。

操作示例:

mov r0, r1, rrx#2 ;將 r1 中的內容進行帶擴充套件的迴圈右移兩位後傳送到 r0 中。

追加:

mov r0, #0x7fffffff

lsl r1, r0, #2

r1 = (r0 << 2)

lsl邏輯左移 高位移出 低位補零

lsr r1, r0, #2

lsr邏輯右移 低位移出 高位補零

asr r1, r0, #16

asr 算數右移 低位移出 高位補符號位

asl 算數左移 高位移出 低位補零等價於lsl

ror r2, r1, #4

ror迴圈右移 低位移出 高位補低位

mov r1, r2, lsl #4

r1 = (r2 << 4)

ARM 指令集 比較指令

譯註 cmp 和 cmp 是算術指令,teq 和 tst 是邏輯指令。把它們歸入一類的原因是它們的 s 位總是設定的,就是說,它們總是影響標誌位。compare negative cmn status op 1 op 2 cmn同於cmp,但它允許你與小負值 運算元 2 的取負的值 進行比較,比如難...

ARM指令集 SWP指令

arm指令集 swp指令 swp和swpb是arm指令集中對儲存單元的原子操作,即對儲存單元的一次讀和一次不可被分割。swp和swpb分別完成儲存器和暫存器之間 乙個字 32bit 和乙個位元組 8bit 的資料交換。swp指令主要是完成arm體系架構處理器的同步操作,在linux作業系統中實現訊號...

Arm指令集 偽指令

目錄 arm指令集 跳轉指令 資料處理 程式狀態暫存器傳輸指令 load srote指令 協處理器指令 異常中斷產生指令 gnu arm偽指令 資料定義 彙編控制 其他指令 blx register string abcd efgh hello asciz qwer sun world ascii ...