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填充

0 0