三. Cortex-A7简介

Cortex-A7简介

  • 1. 运行模型
  • 2.寄存器组
  • 3. 汇编基础
    • (1)汇编语法
      • <1> 基本语句
      • <2> 字段
    • (2) 数据传输指令
    • (3)存储器访问指令
    • (4) 压栈和出栈指令
    • (5)跳转指令
    • (6)算数运算指令
    • (7)逻辑运算指令

1. 运行模型

九种运行模型:User、 FIQ、 IRQ、Supervisor(SVC)、 Abort、 Undef 、Monitor、Hyp和 System
除了 User(USR)用户模式以外,其它 8 种运行模式都是特权模式。
可以通过软件进行任意切换,也可以通过中断或者异常来进行切换。
每一种模式都有一组寄存器供异常处理程序使用。
三. Cortex-A7简介_第1张图片

2.寄存器组

三. Cortex-A7简介_第2张图片
R0~R7,所有模式下这 8 个寄存器都是同一个物理寄存器, 模式切换会被覆盖。
R8~R14,部分模式独有的寄存器(蓝色),可以不用执行保存和恢复中
断现场
R13(SP 指针),指向该模式专用的栈地址
R14(LR),存放当前子程序的返回地址, BL 或者 BLX指令会把LR设置为子函数的返回地址
R15(PC), 保存着当前执行的指令地址值加 8 个字节
CPSR,当前程序状态寄存器
SPSR,备份程序状态寄存器,保存/恢复 CPSR
在这里插入图片描述
M[4:0]: 处理器模式控制位
I(bit7): I=1 禁止 IRQ, I=0 使能 IRQ。
F(bit6): F=1 禁止 FIQ, F=0 使能 FIQ。

3. 汇编基础

(1)汇编语法

<1> 基本语句

label: instruction @ comment

label 即标号,表示地址位置
instruction 即指令
comment 就是注释内容

<2> 字段

预定义了段名:
.text 表示代码段。
.data 初始化的数据段。
.bss 未初始化的数据段。
.rodata 只读数据段。
.section 来定义一个段

.section .testsection @定义一个 testsetcion 段

(2) 数据传输指令

MOV 指令
从一个寄存器拷贝到另外一个寄存器,或者将一个立即数传递到寄存器里面

MOV R0, R1    @将寄存器 R1 中的数据传递给 R0,即 R0=R1
MOV R0, #0X12  @将立即数 0X12 传递给 R0 寄存器,即 R0=0X12

MRS MSR 指令
殊寄存器(如 CPSR 和 SPSR) 和 通用寄存器之间数据传递

MRS R0, CPSR   @将特殊寄存器 CPSR 里面的数据传递给 R0,即 R0=CPSR
MSR CPSR, R0    @将 R0 中的数据复制到 CPSR 中,即 CPSR=R0

(3)存储器访问指令

先将要配置的值写入到 Rx(x=0~12)寄存器中,然后借助LDR/STR将 Rx 中的数据写入到 寄存器(地址)。

LDR R0, =0X0209C004     @将寄存器地址 0X0209C004 加载到 R0 中,即 R0=0X0209C004
LDR R1, [R0]            @读取地址 0X0209C004 中的数据到 R1 寄存器中

LDR R0, =0X0209C004     @将寄存器地址 0X0209C004 加载到 R0 中,即 R0=0X0209C004
LDR R1, =0X20000002     @R1 保存要写入到寄存器的值,即 R1=0X20000002
STR R1, [R0]            @将 R1 中的值写入到 R0 中所保存的地址中

(4) 压栈和出栈指令

主要用于保护现场,使用SP指针在函数调用时,保存和恢复寄存器的值。

PUSH {R0~R3, R12} @将 R0~R3 和 R12 压栈
PUSH {LR} @将 LR 进行压栈

POP {LR} @先恢复 LR
POP {R0~R3,R12} @在恢复 R0~R3,R12

(5)跳转指令

B 指令: 相对跳转,当前PC到Label的偏移,有个范围限制; 不影响LR寄存器。
BL 指令: 跳转之前会在寄存器 LR(R14)中保存当前 PC 寄存器值 (相对跳转)。
BX & BLX 跳转到存放于 Rm 中的地址处,绝对跳转,依赖程序在RAM的位置。
三. Cortex-A7简介_第3张图片

(6)算数运算指令

三. Cortex-A7简介_第4张图片

(7)逻辑运算指令

三. Cortex-A7简介_第5张图片

你可能感兴趣的:(嵌入式ARM学习笔记,arm开发)