寄存器 R15 为程序计数器(PC),它指向 正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。

ARM9 正常操作时,从 R15 读取的值是处理器 正在取指的地址,即:

R15(PC)= 当前正在执行指令的地址 + 8
1
注:

8 是指 8 个字节,是两条 ARM 指令的长度。
ARM 是 3 级流水线:取指,译码,执行。
由于 ARM7 指令总是以字为单位,所以 R15 寄存器的最低两位总是为 0。
R15 值的改变将引起程序执行顺序的改变。
向 R15 内写入一个值,程序将跳转到以 R15 值为地址的程序执行

下面讲一下上面代码段中的公式怎么推出来的:

ARM7 架构采用了一个 3 段的流水线:

取指:将指令从内存中取出来。
译码:操作码和操作数被译码以决定执行什么功能。
执行:执行已译码的指令。

由上述三级指令流程我们可以很容易得出下面这幅流程图:
从第三列我们可以看出来 PC 指向的正在取指的指令是第三条指令,其地址是 ox00000008,而正在执行的指令是第一条指令,其地址是 0x00000000。很容易看出相差 8。

总结:ARM 状态下,当前 PC 的值位 A,则正在译码的指令地址为 A-4,正在执行指令的地址为 A-8

继续介绍一下 ARM 体系结构的存储器格式

ARM 体系结构将存储器看作是从零地址开始的字节线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为 32 位的微处理器,ARM 体系结构所支持的最大寻址空间为 4GB (232 2^{32}2
32
字节)

存储空间:地址线 32 条,4GB (232 2^{32}2
32
存储字节) 。
存储基本单位:字节。
存储组织:字。

解释一下上面这个图。ARM 一个地址保存一个字节。也就是 0x00000000 这个地址保存一个字节的内容。因而 0x00000000-0x00000003 四个地址保存四个字节,即一个字。
————————————————
版权声明:本文为CSDN博主「在到处之间找我」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_41104353/article/details/85732048

ARM 程序计数器 R15相关推荐

  1. ARM 程序计数器 R15(PC)

    寄存器 R15 为程序计数器(PC),它指向 正在取指的地址.可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况. ARM9 正常操作时,从 R15 读取的值是处理器 正在取 ...

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

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

  3. ARM指针寄存器——堆栈指针寄存器SP、程序计数器PC、连接寄存器LR

    参考:堆栈指针寄存器 SP详解以及栈的作用 作者:蓝色鲜橙多 网址:https://blog.csdn.net/qq_36588941/article/details/89873633?utm_sou ...

  4. ARM处理器的运行模式和ARM寄存器

    一.ARM处理器共有7种运行模式  处理器模式 描述 用户模式(User,usr) 正常程序执行的模式 快速中断模式(FIQ,fiq) 用于高速数据传输和通道处理 外部中断模式(IRQ,irq) 用于 ...

  5. 【ARM】协处理器指令

    00. 目录 文章目录 00. 目录 01. 协处理器指令概述 02. ARM寄存器到协处理器寄存器的数据传送指令MCR 2.1 指令编码格式 2.2 指令的语法格式 2.3 指令举例 2.4 指令的 ...

  6. ARM指令寻址方式之: 内存访问指令寻址

    4.2  内存访问指令寻址 根据内存访问指令的分类,内存访问指令的寻址方式可以分为以下几种. ① 字及无符号字节的Load/Store指令的寻址方式. ② 杂类Load/Store指令的寻址方式. ③ ...

  7. ARM指令寻址方式之: 数据处理指令的寻址方式

    4.1  数据处理指令的寻址方式 4.1.1  数据处理指令的寻址方式概要 数据处理指令的基本语法格式如下. <opcode> {<cond>} {S} <Rd>, ...

  8. ARM微处理器的体系结构

    这里概述的都是一些传统意义上ARM处理器的一些方面,提醒自己看了之后会想起相关知识,或是对ARM有一个总体上的概念,其实都是些简述性的总结,很多都来自网上资料或教学课件,贴在这里,方便以后随时随地的复 ...

  9. ARM(IMX6U)ARM Cortex-A7中断系统(GPIO按键中断驱动蜂鸣器)

    参考:Linux之ARM Cortex-A7 中断系统详解 作者:一只青木呀 发布时间: 2020-09-16 16:07:22 网址:https://blog.csdn.net/weixin_453 ...

最新文章

  1. Mac OS 安全性 任何来源
  2. 《漫画算法》源码整理-3 二叉树遍历
  3. 阳台花园不只美丽-东方美琪·安琪:身心健康谋定心灵升华
  4. linux shell脚本写法,linux: 常用shell脚本写法
  5. java 死锁的检测与修复_调查死锁–第4部分:修复代码
  6. 【J2EE设计模式】模型-视图-控制器模式(MVC模式)
  7. 金山笔试题-字符串排序 : 写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理...
  8. mysql查询去年本月的数据_MySQL查询本周、上周、本月、上个月份数据的sql代码...
  9. linux work有关的命令,VM workstation 中linux 命令
  10. 源码包nginx 配置php,源码安装Nginx和PHP
  11. RabbitMQ路由模式(direct)
  12. micropython入门指南-电子工业出版社-网上书店
  13. jeecms 代码生成 Tools
  14. 初识delphi-spring-framework
  15. c++ opencv mat_【CV实战】OpenCV—Hello world代码示例
  16. matlab打开jpg文件怎么打开,Matlab读取图片、显示和保存图像的详细教程
  17. 硬件只要一块esp8266 nodemcu板+几根杜邦线实现远程PC开机,软件全开源(替代智能开关)
  18. 创业感悟:对未来越有信心,对现在就越有耐心
  19. 64码高清电视 android版,64体育app
  20. Java学习之JDE下载,陆续更新

热门文章

  1. String.Join方法
  2. 2022危险化学品经营单位主要负责人操作证考试题库及答案
  3. CSS边框border
  4. 解决Win10缩放导致c# Winform字体模糊
  5. 三种万用遥控器的比较分析
  6. 聊一聊java线程池ThreadPoolExecutor(三)——线程池中是如何执行任务的?
  7. Ubuntu安装屏幕亮度控制器Brightness
  8. 5分钟搞定微信小程序搜索功能
  9. 网页位置定位-适合导航定位
  10. 完美世界校招算法题2017