cpu.h-棧的宏定義-滿減棧

常常兩兩相對的東西,整一起後有點記不住,就寫下來。

cpu.h中有宏定義使用哪種棧。

#define  OS_STK_GROWTH   1    /* Stack grows from HIGH to LOW memory on ARM   */

棧的四種

滿棧:"滿"字表示棧是滿的,沒有空位,所以棧指針指向棧的最後一個元素。我們入棧時要先移動SP再存數據,出棧時先取數據SP指針再移動。

空棧:"空"字表示棧是有個空位的。所以棧指針指向棧的最一個元素後面的第一個空位。我們入棧時直接存入數據,再移動SP。出棧時,先移動SP再取出數據。

増棧:"増"字表示往地址較大的方向。所以,棧底在低內存地址處,入棧時候的棧指針SP向內存地址較大的方向移動。

減棧:"減"字即減小,表示往地址較小方向。棧底在高內存地址處,入棧時指針SP向內存底子較小的方向移動。

表格表示:

類型 SP指針 存數據 取數據
滿棧 SP指向滿棧(最後一個元素) 先移動再存放 直接取數據後移動
空棧 SP指向空位(最後元素的後一個空位) 直接存放後移動 先移動再取
類型 棧底 棧指針移動方向
増棧 低內存地址 棧指針移動方向爲地址增加方向
減棧 高內存地址 棧指針移動方向爲地址減小方向

在ARM中一般爲滿減棧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章