ARM 程序计数器 R15
寄存器 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相关推荐
- ARM 程序计数器 R15(PC)
寄存器 R15 为程序计数器(PC),它指向 正在取指的地址.可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况. ARM9 正常操作时,从 R15 读取的值是处理器 正在取 ...
- ARM三个寄存器 : 堆栈指针SP(R13)、连接寄存器LR(R14)和程序计数器PC(R15)
深入理解ARM的这三个寄存器,对编程以及操作系统的移植都是必要的. 1.堆栈指针R13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式.非异常模式( ...
- ARM指针寄存器——堆栈指针寄存器SP、程序计数器PC、连接寄存器LR
参考:堆栈指针寄存器 SP详解以及栈的作用 作者:蓝色鲜橙多 网址:https://blog.csdn.net/qq_36588941/article/details/89873633?utm_sou ...
- ARM处理器的运行模式和ARM寄存器
一.ARM处理器共有7种运行模式 处理器模式 描述 用户模式(User,usr) 正常程序执行的模式 快速中断模式(FIQ,fiq) 用于高速数据传输和通道处理 外部中断模式(IRQ,irq) 用于 ...
- 【ARM】协处理器指令
00. 目录 文章目录 00. 目录 01. 协处理器指令概述 02. ARM寄存器到协处理器寄存器的数据传送指令MCR 2.1 指令编码格式 2.2 指令的语法格式 2.3 指令举例 2.4 指令的 ...
- ARM指令寻址方式之: 内存访问指令寻址
4.2 内存访问指令寻址 根据内存访问指令的分类,内存访问指令的寻址方式可以分为以下几种. ① 字及无符号字节的Load/Store指令的寻址方式. ② 杂类Load/Store指令的寻址方式. ③ ...
- ARM指令寻址方式之: 数据处理指令的寻址方式
4.1 数据处理指令的寻址方式 4.1.1 数据处理指令的寻址方式概要 数据处理指令的基本语法格式如下. <opcode> {<cond>} {S} <Rd>, ...
- ARM微处理器的体系结构
这里概述的都是一些传统意义上ARM处理器的一些方面,提醒自己看了之后会想起相关知识,或是对ARM有一个总体上的概念,其实都是些简述性的总结,很多都来自网上资料或教学课件,贴在这里,方便以后随时随地的复 ...
- ARM(IMX6U)ARM Cortex-A7中断系统(GPIO按键中断驱动蜂鸣器)
参考:Linux之ARM Cortex-A7 中断系统详解 作者:一只青木呀 发布时间: 2020-09-16 16:07:22 网址:https://blog.csdn.net/weixin_453 ...
最新文章
- Mac OS 安全性 任何来源
- 《漫画算法》源码整理-3 二叉树遍历
- 阳台花园不只美丽-东方美琪·安琪:身心健康谋定心灵升华
- linux shell脚本写法,linux: 常用shell脚本写法
- java 死锁的检测与修复_调查死锁–第4部分:修复代码
- 【J2EE设计模式】模型-视图-控制器模式(MVC模式)
- 金山笔试题-字符串排序 : 写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理...
- mysql查询去年本月的数据_MySQL查询本周、上周、本月、上个月份数据的sql代码...
- linux work有关的命令,VM workstation 中linux 命令
- 源码包nginx 配置php,源码安装Nginx和PHP
- RabbitMQ路由模式(direct)
- micropython入门指南-电子工业出版社-网上书店
- jeecms 代码生成 Tools
- 初识delphi-spring-framework
- c++ opencv mat_【CV实战】OpenCV—Hello world代码示例
- matlab打开jpg文件怎么打开,Matlab读取图片、显示和保存图像的详细教程
- 硬件只要一块esp8266 nodemcu板+几根杜邦线实现远程PC开机,软件全开源(替代智能开关)
- 创业感悟:对未来越有信心,对现在就越有耐心
- 64码高清电视 android版,64体育app
- Java学习之JDE下载,陆续更新