arm處理器支援九種定址方式,分別是:立即定址、暫存器定址、暫存器間接定址、暫存器移位定址、基址變址定址、多暫存器定址、堆疊定址、塊拷貝定址、相對定址
例如:
mov
r0, #1234
作用是將十進位制數1234賦值給r0,執行結果是r0 = 1234, 立即數以「#」作為字首,十六進製制數以「0x」開頭,如#0x12。
例如:
add
r0, r1, r2
作用是將r1+r2的值賦值給r0暫存器,執行結果r0=r1+r2。
例如:
ldr r0, [r1]
ldr用於從儲存器載入資料到暫存器,該指令作用是將r1暫存器中的數值作為位址,將此位址中的數值賦值給r0暫存器。
例如:
mov
r0, r1, lsl
#2
作用是將r1暫存器左移兩位,即「r1<<2」後賦值給r0暫存器,指令執行後r0=r1*4
暫存器移位定址支援五種位移操作:
例如:
ldr r0,[r1,#-4]
作用是將r1暫存器中的值減4作為位址,將該位址中的值賦值給r0。
例如:
ldmia r0,
ldm是資料載入指令,指令的字尾ia表示每次執行完載入操作後r0暫存器的值自增1個字,arm指令集中,字表示的是32位的數值。這條指令執行後,r1=[r0], r2=[r0+#4], r3=[r0+#8], r4=[r0+#12]。
例如:
stmfd sp!,{r1-r7, lr} ;將r1-r7, lr壓入堆疊。滿遞減堆疊,多用於儲存子程式「現場」。
ldmed sp!,{r1-r7, lr} ;將堆疊中的資料取回到r1-r7, lr暫存器。空遞減堆疊,多用於恢復子程式「現場」。
可實現連續位址資料從儲存器的某一位置拷貝到另一位置。
例如:
ldmia r0!, ;從r0暫存器指向的儲存單元中讀取3個字到r1-r3暫存器
stmia r0!, ;儲存r1-r3暫存器的內容到r0暫存器指向的儲存單元
bl next
……next:
……
bl next是跳到next標號處執行。這裡的bl採用的就是相對定址,標號next就是偏移量。 ARM 處理器定址方式
2007 10 26 13 35 arm 處理器定址方式 定址方式是根據指令中給出的位址碼欄位來實現尋找真實運算元位址的方式,arm處理器有 9 種基本定址方式。1 暫存器定址 mov r1,r2 r2 r1 sub r0,r1,r2 r1 r2 r0 指令執行時直接取出暫存器值操作。2 立即定址 ...
ARM處理器 八種定址方式
arm處理器的八種定址方式 前言 1.什麼是定址?資料都存在儲存器中,定址簡單地說就是找到儲存資料或指令的位址。儲存器有很多儲存單元,用於儲存資料。或者說,定址就是讀取資料所在儲存裝置中對應位址編號中儲存的內容。以儲存單位定址分為位,字,節,字,雙字定址。以功能定址分為直接定址,間接定址,暫存器定址...
ARM定址方式
arm定址方式定義 處理器根據指令中給出的資訊來找到所需運算元的方式 立即數定址 運算元本身就在指令中給出,只需要取出指令就得到了運算元的方式。運算元稱為立即數 add r0,r0,0x3f r0 r0 3f 第二個數就是運算元,需要用 來作為字首 暫存器定址 運算元存在暫存器中,利用暫存器中的數值...