ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
C/C++ 編譯器使用堆棧來:
運(yùn)行時(shí)堆棧從高位地址增長到低位地址。編譯器使用 R13 寄存器來管理此堆棧。R13 是指向堆棧下一個(gè)未使用位置的堆棧指針 (SP)。
鏈接器設(shè)置堆棧大小,創(chuàng)建全局符號(hào) __TI_STACK_SIZE,并為其分配一個(gè)等于堆棧大小的值(以字節(jié)為單位)。默認(rèn)的堆棧大小為 2048 字節(jié)??梢栽阪溄訒r(shí)使用鏈接器命令中的 --stack_size 選項(xiàng)來更改堆棧大小。更多有關(guān) --stack_size 選項(xiàng)的信息,請(qǐng)參閱《ARM 匯編語言工具用戶指南》中的鏈接器描述章節(jié)。
在系統(tǒng)初始化時(shí),SP 被設(shè)置為堆棧頂部的指定地址。此地址是 .stack 段末尾之后的第一個(gè)位置。由于堆棧的位置取決于 .stack 段的分配位置,因此堆棧的實(shí)際地址是在鏈接時(shí)確定的。
C/C++ 環(huán)境在函數(shù)輸入時(shí)自動(dòng)遞減 SP,以保留執(zhí)行該函數(shù)所需的所有空間。堆棧指針在函數(shù)出口處遞增,以將堆?;謴?fù)到函數(shù)輸入之前的狀態(tài)。如果將匯編語言例程連接到 C/C++ 程序,請(qǐng)確保將堆棧指針恢復(fù)到函數(shù)輸入之前的相同狀態(tài)。
更多有關(guān)使用堆棧指針的信息,請(qǐng)參閱節(jié) 6.3;更多有關(guān)堆棧的信息,請(qǐng)參閱節(jié) 6.4。