新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM中SP,LR,PC使用

        ARM中SP,LR,PC使用

        作者: 時間:2016-11-09 來源:網絡 收藏
        MOV PC,LR

        看下面這個ARM匯編吧
        BL NEXT ;跳轉到子程序
        ......... ;NEXT處執行
        NEXT
        ..........
        MOV PC,LR ;從子程序返回
        這里的BL是跳轉的意思,LR(R14)保存了返回地址
        PC(R15)是當前地址,把LR給PC就是從子程序返回
        這里有一下總結
        首先
        1.SP(R13) LR(R14)PC(R15)
        2.lr(r14)的作用問題,這個lr一般來說有兩個作用:
        1》.當使用bl或者blx跳轉到子過程的時候,r14保存了返回地址,可以在調用過程結尾恢復。
        2》.異常中斷發生時,這個異常模式特定的物理R14被設置成該異常模式將要返回的地址。

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

        另外注意pc,在調試的時候顯示的是當前指令地址,而用mov lr,pc的時候lr保存的是此指令向后數兩條指令的地址,大家可以試一下用mov pc,pc,結果得到的是跳轉兩條指令,這個原因是由于arm的流水線造成的,預取兩條指令的結果.
        3.》我以前看書不懂的地方
        子程序返回的三種方法
        現在總結如下
        1.MOV PC,LR
        2.BL LR
        3.在子程序入口處使用以下指令將R14存入堆棧
        STMFD SP!,{,LR}
        對應的,使用以下指令可以完成子程序的返回
        LDMFD SP!, {,LR}



        關鍵詞: ARMSPLRP

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 屯昌县| 利川市| 桐梓县| 柞水县| 临高县| 疏勒县| 内黄县| 岫岩| 邳州市| 合川市| 江门市| 大新县| 郧西县| 江永县| 和平县| 普安县| 旬阳县| 蒙山县| 莱芜市| 云浮市| 图们市| 奉化市| 繁峙县| 五原县| 叶城县| 正阳县| 永宁县| 鲁山县| 宜兰县| 大安市| 山阳县| 昌图县| 封丘县| 灵武市| 兴和县| 静乐县| 金坛市| 依兰县| 利川市| 长垣县| 上栗县|