ARM彙編指令

2021-10-08 13:14:53 字數 1566 閱讀 6892

跳轉指令

b:跳轉指令

bl:帶返回的跳轉指令

blx:帶返回和狀態切換的跳轉指令

bx:帶狀態切換的跳轉指令

b loc_位址

beqbne

儲存器與暫存器交換資料指令

ldr:從儲存器中載入資料到暫存器《--load

ldr r8,[r9,#4

]:r8為待載入資料的暫存器,載入值為r9+

0x4所指向的儲存單元

1,找到x20+0x28的堆疊位址,x8的值為第二點

2,然後將x20+0x28的堆疊空間的值賦予x8

str:將暫存器的資料儲存到儲存器--

-》store

str r0,[r1],#8 :將r0中的字資料寫入以r1為位址的儲存器中,並將新位址r1+8寫入r1。

str的過後:[sp+0x40+var_10]=x0。也就是將x0的值放到該位址堆疊中。var_10的值可以在上面找到

ldm:將儲存器的資料載入到乙個暫存器列表--

-》ldm r0,

:將r0指向的儲存單元的資料依次載入到r1,r2,r3暫存器

stm:將乙個暫存器列表的資料儲存到指定的儲存器《--

-

push:將暫存器的值放入堆疊

pop:將堆疊值放入暫存器

swp:將暫存器與儲存器之間的資料進行交換

swp r1,r1 :將r1暫存器與r0指向的儲存單元的內容進行交換

邏輯運算

and:與

orr:或

eor:異或

lsl:邏輯右移

lsr:邏輯左移

lsl r0,r1 #2 r0=r1*4

定址方式

立即定址:

mov r0,#1234  	r0=

0x1234

暫存器定址:

mov r0,r1		r0=r1
暫存器移位定址:

mov r0,r1,lsl #2	r0=r1*

4

暫存器間接定址:

ldr	r0,[r1]		將r1暫存器的值作為位址,取出位址中的值賦值給r0
暫存器間接基址偏移定址:

ldr r0,

[r1,#-

4] 將r1暫存器的值-

0x4的值作為位址,取出位址中的值給r0

ARM彙編指令

b或bl指令引起處理器轉移到 子程式名 也就是位址 處開始執行,這兩個指令都是相對跳轉指令。兩者的不同之處在於bl指令在轉移到子程式執行之前,將其下一條指令的位址拷貝到r14 lr,鏈結暫存器 由於bl指令儲存了下條指令的位址,因此使用指令 mov pc lr 即可實現子程式的返回。而b指令則無法實...

arm彙編指令

一般arm官方風格彙編指令為大寫,windows ads mdk 實際運用一般用gnu風格,為小寫,linux 1 arm採用risc架構,cpu本身不能直接讀取內 存,而需要先將記憶體中內容加載入cpu中通用寄 存器中才能被 cpu處理 ldr loadregister 指令 將記憶體內容加載入通...

ARM彙編指令

1.彙編概述 2.指令分類學習 3.偽指令 4.協處理訪問指令 為什麼要學習使用匯程式設計序?bootloader kernel的初始化和需要執行效率極高的程式中 1.arm標準彙編 2.gnu彙編 section.data 初始化的資料 section.bss 未初始化的資料 section.te...