在嵌入式開發中,
匯程式設計序常常用於非常關鍵的地方,
比如系統啟動時初始化,
進出中斷時
的環境保護,恢復等對效能有要求的地方。
arm指令集可以分為六大類,分別為資料處理指令、load/store
指令、跳轉指令、程式狀態
暫存器處理指令、協處理器指令和異常產生指令。
arm指令使用的基本格式如下:
〈opcode〉
〈rd〉,〈rn〉
opcode
操作碼;指令助記符,如
ldr、str
等。cond
可選的條件碼;執行條件,如
eq、ne等。s
可選字尾;若指定「s」,則根據指令執行結果更新
cpsr
中的條件碼。
rd目標暫存器。
rn存放第
運算元的暫存器。
operand2
第個運算元
arm的定址方式如下:
立即定址
暫存器定址
暫存器間接定址
基址加偏址定址
堆疊定址
塊拷貝定址
相對定址
這裡不作詳細描述,可以查閱相關文件。
資料處理指令
load/store
指令程式狀態暫存器與通用暫存器之間的傳送指令
轉移指令
異常中斷指令
協處理器指令
在s3c2410、s3c2440
的資料手冊中對各種彙編指令有詳細的描述;這裡只對較常見的作寫
介紹。1、相對跳轉指令:b、bl
這兩條指令的不同之處在於
bl指令除了跳轉之外,
還將返回位址(bl
儲存在lr
暫存器中。
這兩條指令的可跳轉範圍是當前指令前後
32m。
bfuna
funa:
bfunb
常用彙編指令
1 加減指令 2 adr指令 adr是小範圍的位址讀取偽指令,ldr是大範圍的讀取位址偽指令。可實際上adr是將基於pc相對偏移的位址值或基於暫存器相對位址值讀取的為指令,而ldr用於載入32為立即數或乙個位址到指定的暫存器中。到這兒就會看到其中的區別了。如果在程式中想載入某個函式或者某個在聯接時候...
常用彙編指令
一 資料傳輸指令 它們在存貯器和 暫存器 寄存 器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依...
常用彙編指令
1 資料傳送指令 mov move r1,r2 r1 r2 move r1,4096 r1 4096 2 偽指令ldr 用於將乙個大於八位的資料裝入暫存器 ldr r1,0x123456789 r1 0x123456789 ldr r1,label 獲取絕對位址,即label的位址 label 3 ...