ARM的批量加载/存储指令
? ?批量加載/存儲(chǔ)指令格式:
LDMXX|STMXX{條件符}{尋址模式}Rb{!},{寄存器列表}
其中XX表示IA/IB/DA/DB.
LDMIA/STMIA ? ?訪問/存儲(chǔ)后地址遞增(Increment After)
LDMIB/STMIB ? ?訪問/存儲(chǔ)前地址遞增(Increment Before)
LDMDA/STMDA ? ?訪問/存儲(chǔ)后地址遞減(Decrement After)
LDMDB/STMDB ? ?訪問/存儲(chǔ)前地址遞減(Decrement Before)
{寄存器列表}的列表順序可隨意,低編號(hào)的寄存器對(duì)應(yīng)低地址空間,高編號(hào)的寄存器對(duì)應(yīng)高地址空間。
該指令常用來實(shí)現(xiàn)堆棧的操作
eg:
? ?LDMIA SP!, {RO-R12,LR}
? ?STMDB SP!, {R0-R12,PC}^
有以下四種堆棧工作方式:
(1)空遞增堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由低地址向高地址推進(jìn)
(2)滿遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù)的位置,且由低地址向高地址推進(jìn)
(3)空遞減堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址推進(jìn)
(4)滿遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù)的位置,且由高地址向低地址推進(jìn)
STMFD(Full Decerement)堆棧push操作,對(duì)應(yīng)STMDB
LDMFD堆棧pop操作,對(duì)應(yīng)LDMIA.
轉(zhuǎn)載于:https://blog.51cto.com/slientradio/1330226
總結(jié)
以上是生活随笔為你收集整理的ARM的批量加载/存储指令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server数据库分区分表
- 下一篇: 如何解决线程安全问题?有几种方式?syn