多寄存器加載/存儲指令的8種模式
當(dāng)堆棧指針指向最后壓入堆棧的數(shù)據(jù)時,稱為滿堆棧(Full Stack);
本文引用地址:http://m.butianyuan.cn/article/201611/320503.htm當(dāng)堆棧指針指向下一個將要放入數(shù)據(jù)的空位置時,稱為空堆棧(Empty Stack)。
同時,根據(jù)堆棧的生成方式,又可以分為遞增堆棧(Ascending Stack)和遞減堆棧(DecendingStack)。
當(dāng)堆棧由低地址向高地址生成時,稱為遞增堆棧,當(dāng)堆棧由高地址向低地址生成時,稱為遞減堆棧。
這樣就有四種類型的堆棧工作方式,ARM 微處理器支持這四種類型的堆棧工作方式,
即:
◎ Empty descending 空遞減堆棧——ED 堆棧首部是高地址,堆棧向低地址增長。棧指針總是指向下一個將要放入數(shù)據(jù)的空位置。
◎ Empty ascending 空遞增堆棧——EA 堆棧首部是低地址,堆棧向高地址增長。棧指針總是指向下一個將要放入數(shù)據(jù)的空位置。
尋址方式 | 說明 | pop | =LDM | push | =STM |
FA | 遞增滿 | LDMFA | LDMDA | STMFA | STMIB |
FD | 遞減滿 | LDMFD | LDMIA | STMFD | STMDB |
EA | 遞增空 | LDMEA | LDMDB | STMEA | STMIA |
ED | 遞減空 | LDMED | LDMIB | STMED | STMDA |
可以輕松的解決這個問題: 尋址方式說明 pop =LDM push =STM FA 遞增滿 LDMFA LDMDA STMFA STMIB FD 遞減滿 LDMFD LDMIA STMFD STMDB EA 遞增空 LDMEA LDMDB STMEA STMIA ED 遞減空 LDMED LDMIB STMED STMDA 按照圖表,可知 STMFD對應(yīng)的是STMDB,根據(jù)arm指令手冊,可知STMDB入棧順序是(1方式)而LDMFD對應(yīng)的是LDMIA,這樣這兩個操作就可以成功配對:
評論