堆栈的生长方向和空栈满栈的区别

   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

原网址:https://blog.csdn.net/queqiongtao/article/details/52223149

猜你喜欢

转载自blog.csdn.net/itworld123/article/details/88058118
今日推荐