心理

當前位置 /首頁/完美生活/心理/列表

arm中mov和mov32的區別

arm中mov和mov32的區別

1、兩者含義不同

Mov只能在寄存器之間移動數據,或將立即數移到寄存器中。x86中沒有LDR指令,因為x86的MOV指令可以將數據從內存移動到寄存器,但也有LDR偽指令。

儘管LDR偽指令與arm的LDR指令非常相似,但它們具有不同的功能,LDR偽指令可以在immediate之前加=來指示地址已寫入寄存器。

2、兩者功能不同

Mov為寄存器分配立即數,但需要立即數範圍,它只能是8位連續有效位通過偶數移位得到的數。如果立即數超出此範圍,則無法使用MOV指令將值賦給寄存器,除了普通的讀數外,LDR還具有給寄存器分配立即數的功能。

1、LDR指令

LDR指令的格式為:LDR{條件} 目的寄存器,<存儲器地址>

LDR指令用於從存儲器中將一個32位的字數據傳送到目的寄存器中。該指令通常用於從存儲器中讀取32位的字數據到通用寄存器,然後對數據進行處理。

當程序計數器PC作為目的寄存器時,指令從存儲器中讀取的字數據被當作目的地址,從而可以實現程序流程的跳轉。該指令在程序設計中比較常用,且尋址方式靈活多樣。

指令示例:

LDR R0,[R1] 將存儲器地址為R1的字數據讀入寄存器R0。

LDR R0,[R1,R2] 將存儲器地址為R1+R2的字數據讀入寄存器R0。

LDR R0,[R1,#8] 將存儲器地址為R1+8的字數據讀入寄存器R0。

LDR R0,[R1,R2] ! 將存儲器地址為R1+R2的字數據讀入寄存器R0,並將新地址R1+R2寫入R1。

LDR R0,[R1,#8] ! 將存儲器地址為R1+8的字數據讀入寄存器R0,並將新地址R1+8寫入R1。

LDR R0,[R1],R2 將存儲器地址為R1的字數據讀入寄存器R0,並將新地址R1+R2寫入R1。

LDR R0,[R1,R2,LSL#2]! 將存儲器地址為R1+R2×4的字數據讀入寄存器R0,並將新地址R1+R2×4寫入R1。

LDR R0,[R1],R2,LSL#2 將存儲器地址為R1的字數據讀入寄存器R0,並將新地址R1+R2×4寫入R1。

2、MOV指令

MOV 數據傳送指令格式:MOV{<cond>}{S} <Rd>,<op1>

功能:Rd=op1

op1可以是寄存器、被移位的寄存器或立即數。

例如:

MOV R0,#5 R0=5

MOV R0,R1 R0=R1

MOV R0,R1,LSL#5 R0=R1左移5位

TAG標籤:mov32 ARM MOV #