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中一般为满减栈

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