ARM組合語言指令(2)
阿新 • • 發佈:2019-02-02
- 程式跳轉 >
- 資料般移指令
- 連續資料載入/儲存指令
ARM微處理器支援連續資料的載入/儲存指令,可以一次將一片連續的記憶體單元和多個暫存器之間般移資料。連續載入指令用於將一片連續的記憶體中的資料般移到多個暫存器,連續資料儲存指令則完成相反的操作。
LDM 連續資料載入指令 STM 連續資料儲存指令 語法: LDM(STM) {條件}{型別}基址暫存器{!},暫存器列表{^} 該指令的常見用途是將多個暫存器的內容入堆疊或出堆疊。型別為非堆疊型定址或堆疊型定址。 非堆疊型定址方式有: IA(Increment After) 基址暫存器在存取後才增加 IB(Increment Before)基址暫存器在存取前即增加 DA(Decrement After)基址暫存器在存取後才減少 DB(Decrement Before)基址暫存器在存取前即減少 堆疊型定址型別 FD(Full Descending) 滿遞減 FA(Full Ascending)滿遞增 ED(Empty Descending)空遞減 EA(Empty Ascending)空遞減 堆疊指令範例 STMFD R13!, {R0, R4-R12, LR} ;將暫存器列表中的暫存器存入堆疊 LDMFD R13!, {R0, R4-R12, PC};將堆疊內容恢復到暫存器 基址暫存器不允許為R15,暫存器列表可以為R0~R14的任意組合。{!}為可選尾碼,若選用該尾碼,則當資料般移完畢之後,將最後的地址寫入到基址暫存器。否則,基址暫存器的內容不改變。{^}為可選尾碼,當指令為LDM且暫存器列表包含R15時,選用該尾碼還表示除了正常的資料般移外,還將SPSR複製到CPSR;此外還表示傳染或傳出的是使用者模式下的暫存器,而不是當前模式下的暫存器。- 堆疊