1. 程式人生 > >棧初始化

棧初始化

寄存器 x3400 sta 傳遞 取出 ack 壓入 pre back

棧:棧是一種具有後進先出性質的數據組織方式,也就是說後存放的先取出,先存放的後取出。棧低是第一個進棧的數據所處的位置,棧頂是最後一個進棧的數據所處的位置。

根據SP指針指向的位置,棧可以分為滿棧和空棧。

滿棧:當堆棧指針SP總是指向最後壓入堆棧的數據

空棧:當堆棧指針SP總是指向下一個將要放入數據的孔位置

ARM采用滿棧

根據SP指針移動的方向,棧可以分為升棧和降棧

升棧:隨著數據的入棧,SP指針從低地址到高地址移動

降棧:隨著數據的入棧,SP指針從高地址到低地址移動

ARM采用降棧

棧幀:就是一個函數使用的那部分棧,所有函數的棧幀串

起來就組成了一個完整的棧。棧幀的兩個邊界分別由fp(r11)

和sp(r13)來界定。

棧的作用:保存局部變量,參數傳遞,保存寄存器的值。

初始化棧:只需要一行代碼,就是給sp指針賦值,2440是64M,6410是256M,210是521M

stack_init:
    ldr sp, =0x3400000  @6410:0x5400 0000 @210:0x2400 0000
    mov pc,lr

棧初始化