單片機堆棧是什么?
簡單來說是在RAM區的一塊存儲空間,在系統空間中用作臨時數據存儲,遵循后進先出的原則。
棧空間操作的關鍵點之一就是棧指針寄存器,每次執行棧操作時,棧指針的內容自動調整。
按照通常的說法,向棧中存儲數據稱為“壓棧”(使用PUSH指令),恢復數據稱為“出棧”(使用POP指令)。根據所使用架構的不同,有些處理器在向棧存入數據時地址會自動增加,而有些則會減小。
這就意味著棧指針始終指向棧空間的最后一個數據,在執行數據存儲前(PUSH),棧指針會首先減小。
PUSH和POP通常用在函數或子程序的開始和結尾處。在函數開始執行時,PUSH操作將寄存器的當前內容存入棧空間;執行結束前,POP又將棧空間存儲的數據恢復。一般說來,對每個寄存器的PUSH操作都應相應的進行POP操作。否則恢復的數據可能無法對應之前的寄存器,這樣會導致無法預期的后果,比如棧溢出。