4種棧結構和對應的ARM指令字尾

2021-10-21 23:50:09 字數 1014 閱讀 3647

ia(increase after)先傳輸,再位址+4

ib(increase before)先位址+4,再傳輸

da(decrease after)先傳輸,再位址-4

db(decrease before)先位址-4,再傳輸

fd(full decrease)滿遞減堆疊

ed(empty decrease)空遞減堆疊

fa(full add) 滿遞增堆疊

ea(empty add)空遞增堆疊

例如:stmia sp,

將r0存入sp指向的記憶體處(假設為0x30001000);然後位址+4(即指向0x30001004),將r1存入該位址;然後位址再+4(指向0x30001008),將r2存入該位址······直到r12內容放入(0x3001030),指令完成。

空棧:棧指標指向空位,每次存入時可以直接存入然後棧指標移動一格;而取出時需要先移動一格才能取出

滿棧:棧指標指向棧中最後一格資料,每次存入時需要先移動棧指標一格再存入;取出時可以直接取出,然後再移動棧指標

增棧:棧指標移動時向位址增加的方向移動的棧

減棧:棧指標移動時向位址減小的方向移動的棧

1.滿減棧:進棧(先移動指標再入棧,指標往位址減小的方向移動);出棧(先出棧,棧指標往位址增大的地方移動)。

2.滿增棧:進棧(先移動指標再入棧,指標往位址增大的方向移動);出 棧(先出棧,棧指標往位址減小的地方移動)。

3.空減棧:進棧(先進棧,棧指標往位址減小的方向移動);出棧(先移動指標再出棧,棧指標往位址增大的方向移動)

4.空增棧:進棧(先進棧,棧指標往位址增大的方向移動);出棧(先移動指標再出棧,棧指標往位址減小的方向移動)

備註:使用時不用糾結時哪一種棧結構,只要進棧和出棧用同一種棧結構就不會出錯。

arm預設使用滿減棧

注:參考朱老師物聯網大講堂

資料結構 筆記4 棧和佇列

棧 stack 是限定在表的一端進行插入和刪除運算的線性表。插入,刪除的一段稱為棧頂 top 另一端為棧底 buttom 不含元素的空表稱為空棧。棧又被稱為後進先出 last in first out 的線性表 棧的順序結構 順序棧 1.棧的順序儲存結構稱為順序棧。2.當棧滿時再做進棧運算必定產生控...

棧和佇列4 資料結構和演算法26

讓程式設計改變世界 change the world by program 講完了棧的順序儲存結構,也給大家結合了一些例題演練,相信大家對棧再也不陌生了吧?現在我們來看下棧的鏈式儲存結構,簡稱棧鏈。通常我們用的都是棧的順序儲存結構儲存,鏈式儲存我們作為乙個知識點,大家知道就好!棧因為只是棧頂來做插入...

C Day4 指標和結構體

二 結構體 include using namespace std intmain 32位作業系統 64位作業系統 4位元組 所有型別int float double 8位元組 所有型別 int s int 0x1124 cout 指標的值 sconst既修飾指標又修飾常量。const int co...