新闻中心

EEPW首页>嵌入式系统>设计应用> GNU ARM汇编--(三)ARM处理器的基本原则

GNU ARM汇编--(三)ARM处理器的基本原则

作者: 时间:2016-11-26 来源:网络 收藏
这一篇的知识来源全部来自《ARM System Developers Guide》

从编程人员的视角来看,arm核是由数据总线连接的功能单元组成,如下图所示:

本文引用地址://m.amcfsurvey.com/article/201611/321728.htm

数据通过数据总线流向处理器核心,这里的数据可以是将要执行的指令,也可以是数据项.上面的图是Von Neumann体系的arm核,数据项和指令共用同一总线.而h哈佛结构体系的arm核就会用两个不同的总线.

就像所有的RISC处理器,arm采用load-store体系结构.也就是说它含有两条不同的指令类型来出入处理器.loar指令将数据从内存拷贝到寄存器,store指令是将数据从寄存器拷贝到内存.没有直接操作内存中数据的数据处理指令.数据的处理离不开寄存器.

ARM指令一般有两个源寄存器,Rn和Rm,和一个目的寄存器,Rd.ARM的一个重要特性是Rm可以在送入ALU之前被桶型移位器做预处理,这样就会有很多形式的表达式和寻址方式.

下面介绍ARM处理器的几个关键分量:寄存器,当前程序状态寄存器和流水线

寄存器:

通用目的寄存器可以保存数据或者地址.由字母r和编号数字来表示.所有的寄存器都是32bit大小.

一共有18个活动的寄存器:16个数据寄存器和两个程序状态寄存器.数据寄存器由r0--r15表示.

ARM处理器有3个寄存器分配为特殊的功能:r13,r14,r15

r13通常用作栈指针(sp),存储当前处理器工作模式下的栈顶;

r14被称作链接寄存器(lr),当发生调用时存放调用子程序的返回地址;

r15被称作程序计数器(pc),保存被处理器预取的下一条指令的地址.

除了这16个数据寄存器,还有来年各个程序状态寄存器:cpsr和spsr.处理器的当前工作模式决定了哪些寄存器是可见的.

当前程序状态寄存器:

ARM核使用cpsr来显示和控制内部的操作.通用程序状态寄存器的内部如下:

cpsr分为四个域,每个域有8位的宽度:flags,status,extension和control.control域包含处理器模式和状态以及中断屏蔽位.flags域包含condition flags.

处理器模式:

处理器模式决定了当前哪些寄存器是可用的以及cpsr本身的访问权限.处理器模式分为特权模式和非特权模式:特权模式对cpsr有完全的读写控制.而非特权模式

只能读cpsr的control域但是仍可以读写condition flags.

一共有7中处理器模式:六种特权模式(abort,fiq,irq,svc,system和undefined)和一种非特权模式(user).

当试图访问内存失败时处理器会进入abort模式,fiq和irq对应ARM处理器的两种中断级别.svc是系统reset后进入的模式,也是os kernel工作的模式.

system模式是user模式的特殊版本,它有对cpsr的读写控制.undefined模式在处理器遇到未定以的指令或者不支持的操作时使用.

user模式在应用程序下使用.

Banked registers:


上一页 1 2 下一页

评论


技术专区

关闭