在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC硬件堆棧與軟件堆棧

            PIC硬件堆棧與軟件堆棧

            作者: 時間:2016-11-13 來源:網(wǎng)絡 收藏
            硬件堆棧:或許也可以稱作系統(tǒng)堆棧,是位于片內RAM區(qū)。有人說,只要能使用PUSH,POP指令的單片機,都可以說含有硬件堆棧。這樣的說法我個人覺得不是很全面。通過指令進行壓棧和出棧操作只是系統(tǒng)堆棧中的一種操做。系統(tǒng)堆棧還可以被隱含調用。例如,當調用子程序時,系統(tǒng)會主動把斷點壓入堆棧,并不需要用戶通過指令操作。系統(tǒng)堆棧可以用來保存數(shù)據(jù),或在任務子程序間傳遞數(shù)據(jù)。通常,棧底設在內存的高端,也就是把內存的最高一段空間劃作棧區(qū)。這些都是向下生長棧。棧指針可能是專用的寄存器,也可能借用一通用寄存器。也有單片機是在數(shù)據(jù)區(qū)里劃一塊作棧區(qū),可能是向上生長,也可能是向下生長。

            軟件棧是你自己通過編碼實現(xiàn)的。你在內存里劃一塊作棧區(qū),用一個變量作棧指針。

            本文引用地址:http://www.biyoush.com/article/201611/316247.htm

            軟件堆棧:也可以說是用戶堆棧??梢员欢x在內部或外部RAM中。它是用戶為任務建立的專用數(shù)據(jù)堆棧,與系統(tǒng)堆棧的數(shù)據(jù)區(qū)是隔開的。它可以保存用戶想保存的任何寄存器和狀態(tài)字。

            MPLAB C18的軟件堆棧是向上生長的堆棧數(shù)據(jù)結構,編譯器把函數(shù)參數(shù)和auto存儲類別的局部變量放入軟件堆棧中。軟件堆棧與PICmicro單片機用于保存函數(shù)調用返回地址的硬件堆棧不同。

            棧指針(FSR1)始終指向下一個可用的堆棧地址。MPLAB C18使用FSR2作為幀指針,這樣可以快速訪問局部變量和參數(shù)。函數(shù)被調用時,其基于堆棧的參數(shù)以自右向左的順序壓入堆棧,然后再調用這個函數(shù)。進入函數(shù)時,最左端的函數(shù)參數(shù)位于軟件堆棧的頂端。

            幀指針指向堆棧中把基于堆棧的參數(shù)和基于堆棧的局部變量分隔開的地址?;诙褩5膮?shù)位于幀指針的下方,而基于堆棧的局部變量位于幀指針的上方。剛進入C函數(shù)時,被調用函數(shù)把FSR2的值壓入堆棧,并把FSR1的值復制到FSR2,從而保存了調用函數(shù)的現(xiàn)場并初始化了當前函數(shù)的幀指針。然后函數(shù)基于堆棧的局部變量的總長度被加到棧指針,并為這些變量分配堆??臻g?;诙褩5木植孔兞亢突诙褩5膮?shù)則根據(jù)其相對于幀指針的偏移量來引用。



            評論


            技術專區(qū)

            關閉