堆栈的生长方向和空栈满栈的区别
生活随笔
收集整理的這篇文章主要介紹了
堆栈的生长方向和空栈满栈的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? 在STM32中,堆棧是向下生長的滿棧
??Cortex-M4/M3 處理器擁有 R0-R15 的寄存器組。其中 R13 作為堆棧指針 SP。SP 有兩個,但在同一時刻只能有一個可以看到,這也就是所謂的“banked”寄存器。
?
? ? PUSH {R0} ? ; ? *(--R13)=R0。R13 是 long*的指針
? ? POP {R0} ? ?; ? ? R0= *R13++
? ?在壓棧時,如果是先減地址再存,則是向下生長的,反之,相反。
? ?滿棧,堆棧指針指向的是最后一個可用數據,空棧,堆棧指針指向的是一個空的,可用的堆棧地址。
? 空堆棧,棧指針pos指向的是一個空的slot,也就是下一個可用的空閑。便于壓棧,而彈的時候需要彈pos-1或者pos+1。
? 滿堆棧,棧指針pos指向的是一個有可用數據的slot,也就是最后一個使用的空間。便于彈棧,而壓的時候需要壓pos+1或者pos-1。
總結
以上是生活随笔為你收集整理的堆栈的生长方向和空栈满栈的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cortex - M3 中断和异常的区别
- 下一篇: 高内聚、低耦合的理解