嵌入式 Linux C ARM C语言&嵌入式嵌入式linux

ARM System Developer's Guide 学习笔

2020-04-16  本文已影响0人  kekeMemory

介绍

本章是整个ARM嵌入式系统开发手册中最基本的章节。在做嵌入式研发无论是深度优化还是高效算法都需要本章知识为基础。这里介绍了最常用和实用的ARM 指令。

指令系统

一个CPU所能够处理的全部指令集合,比如多数个人电脑采用的是x86指令集。CPU对指令需要进行译码才能运行。

寄存器

CPU的一个组成部分,里面存放着指令、数据和地址等供CPU计算使用,速度比较快。

不同的ARM架构支持不同的指令,然而,新的版本通常加一些新的指令保留向下兼容。ARMv4T架构应在ARMv5TE处理器上执行。下表展示的完整的可用的ARM指令为ARMv5TE指令集集架构(ISA)。


ARM指令集(1) ARM指令集(2)

ISA包括了所有的核心指令。
我们发现处理器操作使用了pre-conditions和post-conditions来描述指令执行前后的寄存器和存储器。
PRE <pre-conditions>
<instructon/s>
PRO <post-conditions>
在pre- 和 post-conditions,存储器表示为:

mem<data_size>[addresses]

data_size比特的存储器起始地址为addresses 字节。比如:mem32[1024]为起始地址为1KB的32位存储器。
ARM指令处理在寄存器中的数据,并且只能使用加载(load)和存储(store)指令来访问存储器。ARM指令集通常有两个或者三个操作数(operands)。


指令集格式示例

在上述指令中,ADD指令是将 r1 和 r2 寄存器(source源寄存器)中的值相加,然后把结果写回到r3 (destination 目标寄存器)。

ARM 汇编特点1:LDR/STR架构

ARM采用RISC架构,CPU本身不能直接读取内存,而需要先将内存中内容加载入CPU中通用寄存器中才能被CPU处理。

ARM 汇编特点2:指令后缀

同一指令经常附带不同后缀,变成不同的指令。经常使用的后缀有:

AEM 汇编特点3:条件后缀

ARM 指令集分类

ARM指令集根据指令的类别来划分为以下几类
1.数据处理指令(data processing instructions)
2.分支指令(branch instructions)
3.访存指令(load-store instructions)
4.软件中断指令(software interrupt instructions)
5.程序状态寄存器指令(program status instructions)

将通过3.1~3.5 五个笔记对每个类进行详解。

上一篇 下一篇

猜你喜欢

热点阅读