
ARM 滿減棧在 ARM 體系結(jié)構(gòu)中棧的實現(xiàn)方式由兩個維度決定兩個維度1. 棧指針指向的位置滿棧Full棧指針指向最后一個已壓入的有效數(shù)據(jù)空棧Empty棧指針指向下一個可用的空閑位置2. 棧的增長方向增棧Ascending棧向地址增大的方向增長減棧Descending棧向地址減小的方向增長組合起來共有四種棧類型對應(yīng) ARM 的 LDM/STM批量加載/存儲指令后綴類型名稱描述指令后綴FA滿增棧指向最后壓入數(shù)據(jù)向高地址增長STMFA / LDMFAFD滿減棧指向最后壓入數(shù)據(jù)向低地址增長STMFD / LDMFDEA空增棧指向下一空閑位置向高地址增長STMEA / LDMEAED空減棧指向下一空閑位置向低地址增長STMED / LDMED滿減棧幾乎所有遵循 ARM 標(biāo)準調(diào)用約定AAPCS / AAPCS64的架構(gòu)和狀態(tài)都統(tǒng)一使用滿減棧SP棧指針指向最后一次壓棧的數(shù)據(jù)即滿壓棧時地址遞減出棧時地址遞增即減與內(nèi)存布局習(xí)慣一致棧通常從高地址向低地址增長避免與堆沖突