• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 《Cortex-M0權威指南》之體系結構---??臻g操作

    《Cortex-M0權威指南》之體系結構---棧空間操作

    作者: 時間:2016-12-26 來源:網絡 收藏

      ??臻g作為一種存儲器使用機制,是“先入先出”的結構,在系統空間中用作臨時數據的存儲。??臻g操作的關鍵之一為棧指針,每次執行棧操作時,棧指針的內容會自動移動。在M0處理器中,棧指針為R13(SP),而且物理上存在兩個棧指針,MSP,PSP,但每次只會使用一個,由CONTROL以及處理器的運行狀態決定。

    本文引用地址:http://www.czjhyjcfj.com/article/201612/342066.htm

      向棧中存入數據叫“壓棧”(使用PUSH指令),回復數據叫“出?!?使用POP指令)。根據架構不同,有些處理器壓棧后地址增加,有些地址減小。操作基于“滿遞減”的棧模型,意味著棧指針始終指向??臻g最后一個數據,在執行存儲數據PUSH前,棧指針先減小。

      PUSH和POP通常用在函數或子程序的開始和結尾處。在函數開始執行時,PUSH操作將的當前內容存入棧,執行結束前,POP又將??臻g的數據恢復。一般來說執行PUSH操作也要執行POP操作,否則恢復的數據可能無法對應之前的寄存器,這樣導致無法預測的結果,比如棧溢出。

      棧操作的最小單位是4字節(32位),的??臻g被設計位字對齊,地址必須是4的整數倍。由于這個原因,棧指針的最低兩位BITS[1:0]在硬件上被置為0,因此讀書也為0.

      MSP用于普通程序,在由操作系統時,內核使用主棧指針MSP,用戶使用進程棧指針PSP。

      MSP的初始化位于程序空間的開頭部分,PSP沒有進行初始化定義,它需要通過軟件初始化。



    關鍵詞: Cortex-M0 寄存器

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 宁陕县| 荣成市| 南木林县| 湟源县| 安宁市| 商丘市| 武鸣县| 全椒县| 榆中县| 镇巴县| 安新县| 桑植县| 南陵县| 兴安县| 巨野县| 六枝特区| 伊金霍洛旗| 宿州市| 和平县| 永川市| 宣化县| 新野县| 富源县| 侯马市| 健康| 咸丰县| 梅州市| 尼勒克县| 龙海市| 长汀县| 平陆县| 鹰潭市| 民丰县| 屏边| 安丘市| 蚌埠市| 娄烦县| 三亚市| 萨迦县| 揭阳市| 保山市|