ARM_s5pv210_arm_6(上)
来源:互联网 发布:贵阳行知科技职业学校 编辑:程序博客网 时间:2024/06/05 22:33
ARM工作模式:
管理模式
快速中断
中断
中止
未定义
系统
用户
ARM运行状态:
ARM状态:运行ARM指令 32 bit PC值字对齐 最后2bit为0
Thumb状态:运行Thumb指令 16bit PC值半字对齐 最后1bit为0
BX Rm
寄存器
37个 32bit
R0-R12 通用寄存器
R13(SP)栈顶指针
R14(LR)返回地址 BL MOV PC,LR//PC = LR
R15(PC)预期指令的地址
CPSR/SPSR 程序状态寄存器
进入异常时,公用寄存器的值进行入栈保护
SPSR_mode = CPSR
异常返回时,公用寄存器的值依次出栈
CPSR = SPSR_mode
mode[4:0]模式位
T[5]
F[6]
I[7]
NZCV[31:28]
B PC(new) = PC(当前) +/- 32M 无返回
BL 带返回,跳转完的程序执行完后,MOV PC,LR进行返回
BX Rm 4G状态切换,CPSR的bit[5] = Rm[0],PC = Rm&0xfffffffe;
数据处理指令:
数据处理指令可细分为4类:
数据传送指令(MOV、MVN)
算术运算指令(ADD、ADC、SUB、SBC、RSB、RSC)
位运算指令(AND、ORR、EOR、BIC)
比较指令(CMP、CMN、TST、TEQ)
数据处理指令的一般格式:
{cond}{s} ,,
:指令操作码
{cond}:条件码
{s}:本指令的结果会影响CPSR的条件标志位NZCV
:寄存器,目标寄存器,用于保存数据处理的结果
:寄存器,第一源操作数
:操作数,第二源操作数
第一源操作数衡为寄存器。
第二源操作数:
共有11种形式:
1.立即数:相当于常量,直接出现在指令中,不用存储在寄存器或者存储器。
ADD R0,R1,#3 //R0 = R1 + 3
2.寄存器:
ADD R0 , R1 , R2//R0 = R1 + R2
3.,LSL #
ADD R0 , R1 , R2 , LSL #1 //
//将R2寄存器中的值逻辑左移1位
LSL逻辑左移:空出的低位用0填充
- ARM_s5pv210_arm_6(上)
- ARM_s5pv210_arm_6(下)
- Anroid上的单元测试(上)
- 表达式求值(上)
- 打印位图(上)
- sfo聚会(上)
- log4j学习(上)
- Asp基础教程(上)
- 指针(上)
- socket_tutorial笔记(上)
- 人到中年(上)
- 打印位图(上)
- Asp基础教程(上)
- 编程修养(上)
- 戒痕(上)
- 租房记(上)
- iptables讲义(上)
- 深入浅出话回调(上)
- linux网络编程之TCP/IP基础:ping命令解释
- 11gr2测试表自动按照月份分区
- Array.prototype方法详解(上)
- LINUX修改、增加IP的方法 ifconfig 两个ip地址 配置文件
- gitLab 需要的sshkeys
- ARM_s5pv210_arm_6(上)
- Java clone() 浅克隆与深度克隆
- Netty:ChannelPipeline
- 数据库面试题
- MD5加解密代码
- Android Studio 2.0 Preview发布,附下载地址,支持即时运行和GPU Profiler
- 关于h5页面,在手机上测试,可配host
- Uploadify 备忘
- 关于java web 启动socket