ARM_s5pv210_arm_5(上)

来源:互联网 发布:30000个易语言源码 编辑:程序博客网 时间:2024/06/07 18:32

ARM 体系架构
精简指令集(RISC)
复杂指令集(CISC)

ARM编程模型:
1.工作模式:
管理模式SVC:复位,执行SWI指令
快速中断FIQ:发生高优先级的中断
中断IRQ:发生低优先级的中断
中止:访问存储器发生非法情况
未定义:执行的指令,不能识别
系统:
用户:
2.工作模式的分类:
异常/非异常:
异常:管理模式,快速中断,中断,中止,未定义
非异常:系统,用户
权限:
特权模式:其余6种都是特权模式
非特权模式:用户模式
3.工作模式之间是否可以切换,如何切换?
工作模式之间可以切换
切换的方式有两种:
1.处理器自动切换:发生异常,处理器自动进入对应的异常模式
2.指令切换
工作模式之间的切换需要遵循的规则:
1.特权模式之间可以随意切换
2.可以从特权模式进入用户模式,不能从用户模式切换到特权模式。
3.如果用户模式要进入特权模式,可以通过调用SWI指令来完成。
4.ARM的运行状态:
1—–ARM状态
执行ARM指令,32bit
PC值字(4个字节)对齐,PC的值最后两个bit为0(2进制)
20008000
20008004
20008008
2—–Thumb状态
执行Thumb指令,16bit
PC的值半字(2个字节)对齐,PC的值最后一个bit为0(2进制)
20008000
20008002
20008004
20008006
5.运行状态的切换
1.处理器自动切换
2.用指令切换
6.寄存器:
在Cortex-A8的核心里面
寄存器没有地址,如果要使用,直接使用r0,r1
寄存器是32bit
这里写图片描述
R0-R12:通用寄存器
R13(sp):栈顶指针,栈顶的地址,栈是内存的一个区域,异常模式下,都有自己的栈,在发生异常的时候,cpu会自动切换异常模式,先保护现场,将上一模式下的寄存器进行入栈,等到异常处理完毕,返回上一模式时,再将栈中保存的值依次出栈到对应的寄存器。
入栈:保护现场,出栈:返回现场
R14(lr):存放返回地址
R15(pc):存放的取值的指令的地址
这里写图片描述
执行一条指令,分三个阶段:
取值->解码->执行
这三个阶段,分别为三个不同的硬件来完成
取值 解码 执行
push
add push
ldr add push
故正在执行的指令是push 地址:20008000
正在解码的指令的地址: 20008004
正在取值的指令的地址: 20008008
pc = 20008008
正在执行的指令的地址 = 正在取值的指令的地址 - 8

cpsr:保存当前状态
spsr:备份cpsr内的数值(状态)
/******************/

0 0
原创粉丝点击