堆栈指针R13(SP)

MSP堆栈指针
PSP堆栈指针

连接寄存器R14(LR)

1》.函数调用

当使用bl或者blx跳转到子过程的时候,r14保存了返回地址,可以在调用过程结尾恢复。
使用BL或BLX时,跳转指令自动把返回地址放入r14中;子程序通过把r14复制到PC来实现返回,通常用下列指令之一:
MOV PC, LR
BX LR

通常子程序这样写,保证了子程序中还可以调用子程序。stmfd sp!, {lr}……ldmfd sp!, {pc}

2》.中断

异常中断发生时,这个异常模式特定的物理R14被设置成该异常模式将要返回的地址。

1、中断到来

会依次保存寄存器中的值,由硬件自动完成

2、调用中断处理函数

3、中断返回


查看LR的值,如果LR=0xffff fff1
????
查看LR的值,如果LR=0xffff fff9
说明进入中断之前,使用的是MSP堆栈,因为进入中断之前会依次保存寄存器的值,所有可以通过MSP指针找到R0,R1,R2,R3,R12,LR,返回地址,PSR
查看LR的值,如果LR=0xffff fffD
说明进入中断之前,使用的是PSP堆栈,因为进入中断之前会依次保存寄存器的值,所有可以通过PSP指针找到R0,R1,R2,R3,R12,LR,返回地址,PSR

程序计数器R15(PC)

ARM中SP、LR、PC三个寄存器介绍相关推荐

  1. unity2D学习(14)血条显示、Canvas中Render Mode的三种模式介绍

    1 血条素材处理 分割处理:对上一章画出来的血条图片做分割处理 整理素材格式: Sprite Mode选择Multiple:因为一张图片包含多个素材. Pixels Per Unit单位像素为16:与 ...

  2. html图层透明度,ps图层透明度怎么调整?Photoshop中调整图层透明度的三种方法介绍...

    Photoshop里面怎么调整图层的透明度?作为一个"切图仔",切图的时候,看到总有透明的图层估计是最头痛的事,不知道其他人怎么样,个人却是最怕做透明的样式..扯远了,但确实因为要 ...

  3. arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍

    ARM中所有寄存器都是32位的.这里以cortex-a7内核的MX6ULL处理器为例,按照功能可以分为两类:运行需要寄存器(程序正常运行所需要的,比如变量暂存,pc制作等,总共43个),系统管理控制寄 ...

  4. ARM中通过ldr pc, xxx地址,来跳转到对应的绝对地址去执行

    先来了解一下ldr指令: LDR 是ARM中的指令,也是伪指令. 当用 LDR r0, =num 编译时,编译器会根据num是否能表示为立即数,决定用 ldr 指令或者是mov或mvn指令. 当num ...

  5. Android中图片圆形设置三种方法介绍

    Android开发中经常会用到圆形图片,比如在用户头像设置,现在提供三种主要实现方式: 方案一:使用第三方图像框架 Fresco 1.添加依赖 dependencies {compile 'com.f ...

  6. 解析ARM中OS_CPU_A.S(中断级方式)

    MRS:Move PSR to register,将程序状态寄存器的值复制到通用寄存器 例:MRS R0,CPSR; 传送CPSR 的内容到 R0 MSR:Move Register to PSR,将 ...

  7. SDIO wifi Marvell8801/Marvell88w8801 介绍(三) ---- Marvell8801/Marvell88w8801寄存器介绍

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

  8. ARM三个寄存器 : 堆栈指针SP(R13)、连接寄存器LR(R14)和程序计数器PC(R15)

    深入理解ARM的这三个寄存器,对编程以及操作系统的移植都是必要的. 1.堆栈指针R13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式.非异常模式( ...

  9. 【转】sp,lr,pc即汇编语言中几个常见寄存器的使用

    arm汇编基础(转) 先看个例子: void test2(int a,int b,int c) { int k=a,j=b,m=c; } GCC反汇编: 00000064 <test2>: ...

最新文章

  1. Java8 详解Lambda表达式
  2. java存储整数_关于数组:Java:存储大量整数的最佳数据类型是什么?
  3. 关于鼠标移动太快导致moseleave事件不触发的问题
  4. latex插入表格_如何将word表格变成LaTeX代码?
  5. C#中new和override的区别
  6. matlab错误使用assert,关于异常处理:何时在Matlab中使用assert()?
  7. Android 系统(182)---Android.mk的用法和基础 amp;amp; m、mm、mmm编译命令
  8. git jenkins 子目录,在Jenkins中,如何将项目签出到特定目录(使用GIT)
  9. 数据治理为何越来越重要
  10. 图解项目绩效考核指标及实例模板
  11. 思辨与创新 第二章 展开论证:如何让自己的想法被证明?
  12. java实现输入数字 输出金额_JAVA实现数字大写金额转换的方法
  13. 赛尔号星球大战服务器维修,赛尔号星球大战11月29日更新公告
  14. tiktok英国小店注册流程介绍
  15. CheckListBox的实现方式分析
  16. 什么是共模干扰差模干扰共模信号差模信号
  17. 只见华为高工资!殊不知华为员工有16条高标准
  18. Java容器【集合】笔记
  19. 三星+android+u盘模式,三星手机usb存储器如何连接电脑的【详解】
  20. 寻找二值图像连通域的算法分析

热门文章

  1. Excel中如何取消自动筛选菜单中日期分组状态
  2. 投了简历,HR却不给面试机会的原因是这些!
  3. 文法G[E]: E→E+T|T ,T→T*F|F ,F→i|(E) 求FIRST集,FOLLOW集
  4. png的计算机储存图片的格式吗,png图片怎样转换成jpg格式
  5. 高德地图左上角或任意位置增加自定义按钮,一刷新按钮消失问题
  6. Windows10下安装Oracle 11g
  7. go桌面计算机,内置插件强大丰富! GO桌面EX新鲜试玩
  8. cppsqlite3获取最后一行内容
  9. 元宇宙开源项目,你千万不能错过!
  10. vue 微信公众号支付接口_vue页面在微信公众号调用支付接口