您的位置 首页 编程

ARM 内核SP,LR,PC寄存器

深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常

深化了解ARM的这三个寄存器,对编程以及操作体系的移植都有很大的裨益。

1、仓库指针r13(SP):每一种反常形式都有其自己独立的r13,它一般指向反常形式所专用的仓库,也就是说五种反常形式、非反常形式(用户形式和体系形式),都有各自独立的仓库,用不同的仓库指针来索引。这样当ARM进入反常形式的时分,程序就能够把一般通用寄存器压入仓库,回来时再出栈,确保了各种形式下程序的状况的完整性。

2、衔接寄存器r14(LR):每种形式下r14都有本身版组,它有两个特别功用。

(1)保存子程序回来地址。运用BL或BLX时,跳转指令主动把回来地址放入r14中;子程序通过把r14复制到PC来完成回来,一般用下列指令之一:
MOV PC, LR
BX LR

一般子程序这样写,确保了子程序中还能够调用子程序。
stmfd sp!, {lr}
……
ldmfd sp!, {pc}

(2)当反常产生时,反常形式的r14用来保存反常回来地址,将r14如栈能够处理嵌套中止。

3、程序计数器r15(PC):PC是有读写约束的。当没有超越读取约束的时分,读取的值是指令的地址加上8个字节,我们ARM指令总是以字对齐的,故bit[1:0]总是00。当用str或stm存储PC的时分,偏移量有可能是8或12等其它值。在V3及以下版别中,写入bit[1:0]的值将被疏忽,而在V4及以上版别写入r15的bit[1:0]有必要为00,不然结果不行猜测。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/263449.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部