当前位置: 首页 > news >正文

3.1 ARM体系结构

1、ARM的结构特征

(1)Load/Store体系结构,CPU只处理寄存器中的数据

(2)固定的32位指令

(3)三地址指令格式

程序计数器(Program Counter,PC)来存放指令地址。通常每执行一条指令,PC就自动加1,直接得到下一条指令的地址,这样指令中就无须明显的给出下一条指令地址。三地址格式指令:

OPA1A2A3

(A1) OP (A2) -> A3,OP表示具体的操作,A1、A2表示地址,(A1)、(A2)表示存放在该地址的值。

执行一条三地址的双操作数至少需要访问四次主存,第一次取指令,第二次取第一个操作数,第三次取第二个操作数,第四次保存运算结果。

2、ARM指令集介绍

指令的后缀

(1)S:表示可选后缀,若指定S,则根据指令执行的结果更新CPSR中的条件码,会影响ARM程序状态寄存器的条件码标志(N,Z,C,V)。

N:运算结果的最高位反映在该标志位,对于有符号二进制补码,结果为负数时N=1,结果为正数时N=0。

Z:指令结果为0时Z=1(表示结果相等),反之则Z=0。

C:当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0;当进行减法运算(包括CMP指令),并且最高位产生借位时C=0,否则C=1;对于结合移位的非加法或减法指令,C为从最高位最后移出的值;其它指令C通常不变。

V:当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。

(2)"!":表示在完成数据操作以后,将更新基址寄存器,并且不消耗额外的时间。

LDR    R0, [R1, #4]    ;相当于R0 <- mem[R1+4] R1 = R1 + 4

(3)"^":表示一条特殊形式的指令,在从存储器中装入PC的同时,CPSR也得到恢复。

(4)ARM指令集对数据格式的几个定义:

#号后面加0x或&,表示十六进制

#号后面加0b,表示二进制

#号后面加0d,表示十进制

3、ARM处理器的7种工作模式

(1)用户模式(USR):程序正常工作模式

(2)系统模式(SYS):用于运行特权级的操作系统任务

用户模式与系统模式两者使用相同的寄存器,都没有SPSR(Saved Program Statement Register,已保存程序状态寄存器),但系统模式比用户模式有更高的权限,可以访问所有系统资源。

(3)快速中断模式(FIQ):用于高速数据传输和处理

(4)外部中断模式(IRQ):用于处理外部设备中断

(5)特权模式(SVC):操作系统保护模式,系统复位和软件中断响应进入该模式

(6)数据访问终止模式(ABT):虚拟存储或存储器保护

(7)未定义指令终止模式(UND):用于处理通过软件仿真硬件协处理器

工作模式特权模式异常模式
用户模式
系统模式该组模式下可以任意访问系统资源
快速中断模式通常由系统异常状态切换进该组模式
外部中断模式
特权模式
数据访问终止模式
未定义指令终止模式

4、ARM寄存器

ARM处理器有31个通用寄存器和6个状态寄存器。寄存器按照处理器工作模式划分,有些寄存器被限定在特定模式下访问,有些寄存器可以在任意模式访问。通用寄存器R0~R14、程序计数器PC,以及特定的两个状态寄存器在任何处理模式下都可以访问。

ABORTUSR/SYSFIQIRQSVCUND
R0R0R0R0R0R0
R1R1R1R1R1R1
R2R2R2R2R2R2
R3R3R3R3R3R3
R4R4R4R4R4R4
R5R5R5R5R5R5
R6R6R6R6R6R6
R7R7R7R7R7R7
R8R8R8R8R8R8
R9R9R9R9R9R9
R10R10R10R10R10R10
R11R11R11R11R11R11
R12R12R12R12R12R12
R13(sp)R13(sp)R13(sp)R13(sp)R13(sp)R13(sp)
R14(lr)R14(lr)R14(lr)R14(lr)R14(lr)R14(lr)
R15(cp)R15(cp)R15(cp)R15(cp)R15(cp)R15(cp)
CPSRCPSRCPSRCPSRCPSRCPSR
SPSRSPSRSPSRSPSRSPSR

R13:常作为堆栈指针,处理器的每种模式都有自己的物理寄存器R13,所以在用户应用程序初始化时,都要初始化每种模式的R13,使其指向该运行模式的栈空间,当程序进入异常模式时,可将需要保护的寄存器放入R13所指向的堆栈,当程序从异常模式返回时,则从对应的堆栈中恢复。

R14:子程序链接寄存器(Subroutine Link Register)或链接寄存器(LinkRegister),当子程序调用指令(BL指令)时,R14中得到R15(程序计数器PC的备份),执行完子程序后,又将R14的值复制到R15中,即可完成程序的调用。

R16:CPSR(Current Program Status Register,当前程序状态寄存器)。CPSR可以在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位。

31272476540
NZCVQJundefineIFTmode

SPSR(Saved Program Status Register,备份的程序状态寄存器):SPSR寄存器在处理器进入某种异常模式的时候保存之前的CPSR寄存器的值,用于异常处理后恢复CPSR状态。

相关文章:

  • 【Linux 下Web(Apache/Nginx)入口安全事件及日志溯源流程】
  • 32.C++二叉树进阶1(二叉搜索树)
  • idea实现热部署
  • Leetcode 3469. Find Minimum Cost to Remove Array Elements
  • 在线量化算法(QAT) --学习记录2
  • FastGPT 引申:信息抽取到知识图谱的衔接流程
  • 播放器系列3——解码
  • VLM-E2E:通过多模态驾驶员注意融合增强端到端自动驾驶
  • 如何基于VBA在word中嵌入AI模型实现实时问答(SiliconflowDeepSeek)
  • 编译可以在Android手机上运行的ffmpeg程序
  • nginx accesslog 打印自定义header
  • 厦门大学第3弹:DeepSeek大模型及其企业应用实践(150页PPT,企业人员的大模型宝典)
  • 21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)(非强制登录版本完结)>
  • 历年湖南大学计算机复试上机真题
  • 【AI Guide】AI面试攻略只用看这一篇就够了!力争做全网最全的AI面试攻略——大模型(二十六)词表与词表扩充
  • Mysql学习笔记(六)Django连接MySQL
  • 机器学习算法——回归任务
  • LabVIEW虚拟频谱分析仪
  • 统计Excel列中某值出现的次数
  • 计算机网络数据传输探秘:包裹如何在数字世界旅行?
  • 中国兼职设计师网/惠州seo怎么做
  • 广州10打网站服务商/看b站二十四小时直播间
  • 网站建设安全吗/广告做到百度第一页
  • wordpress 信息分析/seo优化工程师
  • 网站后台登陆不了/在线识图
  • 邯郸贴吧网站/杭州网站推广找哪家