arm汇编----入门概要

  1. 2中工作状态 7种工作模式 37个寄存器,最多可以有18个寄存器同时活动(16个通用寄存器和2个状态寄存器,每一种工作模式下只有R0-R15)
    (1) 2种状态:
    ARM状态:执行32位ARM指令集
    Thumb状态: 执行16位Thumb指令集
    (2) 7种工作模式:
    用户模式(usr):ARM正常执行程序
    快速中断模式(fiq):用于高速数据传输或者通道处理
    外部中断模式(irq):用于通用的中断处理
    管理模式(svc):操作系统使用的保护模式(拥有额外的特权)
    中止模式(abt):当数据或指令预取中止时进入该模式,用于虚拟储存交换及储存保护
    未定义模式(und):当未定义的指令执行进入该模式,用于支持硬件协处理器的软件仿真
    系统模式(sys):运行具有特权的操作系统任务
    其中除了用户模式的其他6种模式又叫做非用户模式,或者特权模式
    除去用户模式和系统模式的其他5种模式又叫做异常模式
    (3)37个寄存器:其中
    通用寄存器总共有31个,主要用于存储数据和保存地址
    6个状态寄存器,用来标识或者设置处理器的工作模式或者工作状态
    31个通用寄存器在ARM状态下的作用:
    8个未分组寄存器(R0-R7),每一个寄存器实际上只指向一个物理寄存器
    1个程序计数器(PC)
    23个分组寄存器:
    其中R8-R12每个都会指向2个物理寄存器,会因为终端模式的不同选择不同的寄存器,标识为R8_fiq,R8_irq等
    R13,R14每一个寄存器实际上指向了6个不同的物理寄存器(usr和sys共用一个寄存器),不同的工作状态将会使用不同的寄存器
    R13在ARM指令中常常用做堆栈指针,
    R14用于BL子程序调用指令,连接寄存器,英文名称,Subroutine Link Register,当程序进入子程序时,该寄存器将会保存R15的备份,当发生中断的时候会保存R15的返回值

6个状态寄存器:1个当前状态寄存器(CPSR),5个备份寄存器(SPSR)
条件码标志位:
状态寄存器CPRS基本格式:
高位:
N:运算结果是不是负数
Z:运算结果是不是零
C:运算是否发生进位
V:是否发生溢出
Q:增强的DSP是否发生溢出

CPSR的低8位用作控制位,在特权模式下可以有程序修改:
I:是否禁止IRQ外部中断
F:是否禁止FIR快速中断
T:是否处于Thunmb指令状态
M1,M2,M3,M4用于标识或者设置处理器的状态

CRSR的其他位位保留位,用于ARM的扩展

Thumb寄存器:是ARM状态下寄存器的一个子集
R0-R7作用于ARM相同,6个状态寄存器与ARM相同
6个SP用于不同工作模式的程序计数器
6个LR用于不同工作模式的子程序连接寄存器

高位寄存器R8-R15可以受限制的访问和使用

ARM数据结构与存储器格式:
地址空间:ARM寄存器32位,因此保存的地址最大是2的32次方,也就意味着ARM体系结构最大的寻址空间是2的32次方
ARM存储体系结构可看做是从零开始的字节的线性组合,0-3字节存储第一个存储的字节数据,依次排列,子单元的地址取值范围为0-2的32次方-1,且地址的后两位为0,每执行一条指令,程序计数器加4个字节。
ARM体系存储结构主要有大端格式和小端格式两种方式,大端格式存储时数据低位字节存放在高位地址,小端格式存储时数据低位字节存放在高地址,默认方式为小端格式.
非对齐访问操作就是处于ARM期间访问地址低2位不为00,处于Thumb状态最后一位不为0
非对齐的指令预取操作:写入PC中的值如果非对齐,运行结果不可预知,要么忽略要么原封不动送给存储系统处理
非对齐的数据访问操作:
执行LOAD/STORE操作,出现非对齐数据访问操作时,会出现以下结果:执行结果不可预知、忽略低两位的值,由存储器忽略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值