新聞中心

        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堆棧操

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 枣庄市| 静安区| 垫江县| 突泉县| 偏关县| 仁寿县| 凤台县| 唐河县| 措勤县| 板桥市| 娄烦县| 富阳市| 衡南县| 宁都县| 讷河市| 镇江市| 安泽县| 土默特左旗| 砚山县| 玛纳斯县| 泾源县| 噶尔县| 大新县| 临武县| 阿拉善右旗| 寻乌县| 额敏县| 荥经县| 法库县| 石渠县| 藁城市| 衡南县| 高台县| 台州市| 九龙县| 班戈县| 海晏县| 怀仁县| 海宁市| 安远县| 安福县|