跳轉指令
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...