ARM体系结构与汇编语言

   在嵌入式开发领域,ARM架构的处理器占了90%以上的市场份额,大多数人学习嵌入式都是从ARM开始的,基于这个背景,本章讲带领大家学习ARM常用的一些汇编指令以及汇编程序的编写,预期的学习收获有两个,以ARM汇编指令为媒介,深入了解ARM体系结构和工作流程, 二是 掌握ARM汇编程序的编写技巧,能看懂反汇编代码,为后面深入学习C语言打下基础,通过反汇编分析,可以从体系结构和底层汇编这样一个新视角去窥探程序的运行机制。

   3.1 ARM体系结构

  计算机的指令集一般可以分为4种,复杂指令集CISC,精简指令集RISC,显式并行指令集,EPIC和超长指令字指令集VLIM,我们在嵌入式学习和工作中需要经常打交道的是RISC指令集,RISC指令集相对于CISC指令集,主要有以下特点,。

1 load/store架构,CPU不能直接处理内存的数据,要先将内存中的数据Load加载到寄存器中才能操作,然后将处理结果Store到内存中。

2 固定的指令长度,单周期指令。

3 倾向于使用更多的寄存器来存储数据,而不是使用内存中的堆栈,效率更高。

   ARM指令虽然属于RISC 但是和原汁原味的RISC相比,还是有一些差异的。

ARM有桶型移位寄存器,单周期内可以完成数据的各种移位操作。

  并不是所有的ARM指令都是单周期的。

   AMR有16的thumb指令集,是32位ARM指令集的压缩形式,提高了代码密度。

  条件执行,通过指令组合,减少了分支指令数目,提高了代码密度。

  增加DSP SIMD/NEON等指令。

  ARM处理器有多种工作模式,如表3-1所示,应用程序正常运行时,ARM处理器工作在用户模式,当程序运行出错或者有中断发生时,ARM处理器就回切换到对应的特权工作模式,用户模式属于普通模式,有些特权指令时运行不了的,需要切换到特权模式下才能运行。在ARM处理器中,除了用户模式时普通模式,其他的都是集中特权模式。

表3-1 AMR处理器的不同工作模式。

处理器模式

模式编码

模式介绍

User mode

应用程序运行的工作模式

FIQ mode

快速中断模式,中断优先级比IRQ高

IRQ mode

中断模式

Supervisor mode

管理模式,保护模式,复位和软中断时一般都会进入该模式

Abort mode

数据存取异常,指令读取读取失败时会进入

Undefined mode

CPU遇到无法识别,未定义的指令时,进入该模式

System mode

类似用户模式,但是可运行特权OS任务,

Monitor mode

仅限于安全扩展。

为了保证计算机能长期安全稳定的运行,CPU提供了多种工作模式和权限管理,应用程序运行时,处理器处于普通模式,没有特权对内存和底层硬件进行操作,应用程序如果要读写磁盘上的音视频数据,驱动声卡播放音乐,往屏幕写数据显示歌词,需要首先通过系统调用或者软中断进入处理器特权模式,运行操作系统内核或者硬件驱动代码, 才能对底层的硬件设备进行读写操作。

    ARM处理器内部,除了基本的算数运算单元,逻辑运算单元浮点运算单元和控制单元。还有一系列寄存器,包括各种通用寄存器,状态寄存器,控制寄存器,用来控制处理器的运行,保存程序运行时的各种状态和临时结果。

R0-R15。

你可能感兴趣的:(arm开发)