新聞中心

arm堆棧操作

作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
arm堆棧的組織結(jié)構(gòu)是 滿棧降 的形式,滿棧即sp是要停留在最后一個(gè)進(jìn)棧元素,降:就是堆棧的增長(zhǎng)方向是從高地址向低地址發(fā)展。

arm對(duì)于堆棧的操作一般采用 LDMFD(pop)和STMFD (push) 兩個(gè)命令。

本文引用地址:http://m.butianyuan.cn/article/201611/322955.htm

以前困惑的就是STMFD 命令 對(duì)于操作數(shù) 是按照什么順序壓棧的

比如:STMFD sp!{R0-R5,LR} 進(jìn)棧順序是:

高地址(1方式)

LR

R5

R4

```````

R0<-sp

低地址

還是:

高地址(2方式)

R0

R1

```

R5

LR <-sp

低地址

現(xiàn)在通過下表,可以輕松的解決這個(gè)問題:

尋址方式說明pop=LDMpush=STM
FA遞增滿LDMFALDMDASTMFASTMIB
FD遞減滿LDMFDLDMIASTMFDSTMDB
EA遞增空LDMEALDMDBSTMEASTMIA
ED遞減空LDMEDLDMIBSTMEDSTMDA

按照?qǐng)D表,可知 STMFD對(duì)應(yīng)的是STMDB,根據(jù)arm指令手冊(cè),可知STMDB入棧順序是(1方式)

而LDMFD對(duì)應(yīng)的是LDMIA,這樣這兩個(gè)操作就可以成功配對(duì)



關(guān)鍵詞: arm堆棧操

評(píng)論


技術(shù)專區(qū)

關(guān)閉