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内的数值(状态)
/******************/
- ARM_s5pv210_arm_5(上)
- ARM_s5pv210_arm_5(下)
- Anroid上的单元测试(上)
- 表达式求值(上)
- 打印位图(上)
- sfo聚会(上)
- log4j学习(上)
- Asp基础教程(上)
- 指针(上)
- socket_tutorial笔记(上)
- 人到中年(上)
- 打印位图(上)
- Asp基础教程(上)
- 编程修养(上)
- 戒痕(上)
- 租房记(上)
- iptables讲义(上)
- 深入浅出话回调(上)
- java网络编程之路(一)
- C++容器与算法
- bash的基本功能(别名、快捷键、历史命令)
- 南大软院大神养成计划
- maven学习系列(五)- maven之setting.xml详解
- ARM_s5pv210_arm_5(上)
- 欢迎使用CSDN-markdown编辑器
- 在windows上使用Git命令总结
- Linux用户和组管理 passwd和shadow,groupadd ,useradd,usermod,su,sudo用法
- tomcat可以启动,localhost:8080无法访问
- C++模板
- CIDR地址块及其子网划分(内含原始IP地址分类及其子网划分的介绍)
- golang 字符 数字 bool 类型
- C++系列目录