什么叫軟件堆棧,什么叫硬件堆棧?
看其棧頂指針是否和CPU具有特殊的關(guān)聯(lián),有關(guān)聯(lián)者(如SP)“硬”,而無(wú)關(guān)聯(lián)者“軟”。
單片機在執行調用子程序的指令時(shí),一般會(huì )把返回地址自動(dòng)存入堆棧,而沒(méi)有被單片機自動(dòng)入棧但是也需要保存的內容比如狀態(tài)寄存器、通用寄存器等,就得通過(guò)PUSH等指令把它們人為地保存到堆棧中。自動(dòng)入棧和“人為入?!笨赡苁褂玫氖且粋€(gè)堆棧指針。有的單片機可以分開(kāi),比如AVR,可以通過(guò)“ST -Y, R0”這樣的指令把R0存入軟件堆棧區(Y是由R28和R29兩個(gè)寄存器的值組成的16位指針),有的單片機缺少這樣的指令,就會(huì )把軟件堆棧和硬件堆棧放在一個(gè)??臻g,都使用SP,比如51.
評論