新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > arm堆棧操作

        arm堆棧操作

        作者: 時間:2016-11-28 來源:網絡 收藏
        arm堆棧的組織結構是 滿棧降 的形式,滿棧即sp是要停留在最后一個進棧元素,降:就是堆棧的增長方向是從高地址向低地址發展。

        arm對于堆棧的操作一般采用 LDMFD(pop)和STMFD (push) 兩個命令。

        本文引用地址:http://www.104case.com/article/201611/322955.htm

        以前困惑的就是STMFD 命令 對于操作數 是按照什么順序壓棧的

        比如:STMFD sp!{R0-R5,LR} 進棧順序是:

        高地址(1方式)

        LR

        R5

        R4

        ```````

        R0<-sp

        低地址

        還是:

        高地址(2方式)

        R0

        R1

        ```

        R5

        LR <-sp

        低地址

        現在通過下表,可以輕松的解決這個問題:

        尋址方式說明pop=LDMpush=STM
        FA遞增滿LDMFALDMDASTMFASTMIB
        FD遞減滿LDMFDLDMIASTMFDSTMDB
        EA遞增空LDMEALDMDBSTMEASTMIA
        ED遞減空LDMEDLDMIBSTMEDSTMDA

        按照圖表,可知 STMFD對應的是STMDB,根據arm指令手冊,可知STMDB入棧順序是(1方式)

        而LDMFD對應的是LDMIA,這樣這兩個操作就可以成功配對



        關鍵詞: arm堆棧操

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 无极县| 宣汉县| 建湖县| 无锡市| 班戈县| 昌黎县| 嵊州市| 新津县| 惠东县| 平顶山市| 汤阴县| 望江县| 饶阳县| 西安市| 城口县| 青岛市| 综艺| 湖南省| 抚远县| 合川市| 崇仁县| 班戈县| 铜鼓县| 德格县| 西城区| 镇巴县| 林甸县| 广昌县| 赤壁市| 云阳县| 黑水县| 柞水县| 昌都县| 长武县| 彭山县| 章丘市| 定襄县| 乐东| 大英县| 荆州市| 星子县|