arm的汇编指令精选合辑
ARM指令系统特点
ARM指令系统属于RISC指令系统。标准的ARM指令每条都是32位长,有些ARM核还可以执行Thmub指令集,该指令集是ARM指令集的子集,每条指令只有16位。
1 数据类型
ARM处理器一般支持下列6种数据类型:
l8位有符号字节类型数据;
l8位无符号字节类型数据;
l16位有符号半字类型数据;
l16位无符号半字类型数据;
l32位有符号字类型数据;
l32位无符号字类型数据;
有些ARM处理器不支持半字和有符号字节数据类型。在ARM内部,所有指令都是32操作数据。短的数据数据类型只有在数据传送类指令中才被支持当1个字节数据取出后,被扩展到32位,在内部数据处理时,作为32位的什进行处理,并且ARM指令以字为边界。所有Thumb指令都是16位指令时,并且以2个字节为边界。
ARM协处理器可以支持另外的数据类型,包括一套浮点数据类型,ARM的核并没有明确的支持。
2 存储器组织
图3-1所示为存储器组织。
ARM这的地址的低三下四位必须为00,半字地址的最低位为0。字的内容在存储器中的存放通常有两种方式,即小端(little-endian)和大端(big-endian),这两种方式的不同在于最低位字节的地址是否在最高位字节的地址之前。小端方式每个字的低位字节在后,例如0x12345678小端方式存放如下:
地址 内容
A 78
A+1 56
A+2 34
A+3 12
大端方式的存放如下:
地址 内容
A 12
A+1 34
A+2 56
A+3 78
大多数的ARM处理器芯片都不得可以支持上面两种方式,一般缺省为小端。
23222120
19181716
word16
15141312
half-world12 half-word14
111098
word8
7654
byte6 half-word4
3210
byte3 byte2 byte1 byte0
20212223
16171819
word16
12131415
half-world12 half-word14
891011
word8
4567
Byte5 half-word6
0123
Byte0 byte1 byte2 byte3
(a)小端存储器组织 (b)大端存储器组织
图3-1 存储器组织
3 ARM指令特点
1.每条指令的多功能
ARM指令一个重要的特点是它所有的指令都带有条件,例如用户可以测试某个寄存器的什但是直到下次使用同一条件进行测试时,才能有条件的执行这些指令。ARM指令另一个重要的特点是具有灵活的第2操作数,既可以是立即数,也可以是逻辑运算数,使得ARM指令可以在读取数值的同时进行算术和移位操作。它可以在几种模式下操作,包括通过使用SWI(软件中断)指令从用户模式进入系统模式。
2. 协处理器的作用
ARM内核可以提供协处理器指令接口,通过扩展协处理器完成复杂的功能,因此,ARM指令还包含了多条协处理器接口,使用多达16个协处理器;允许将其他处理器能过协处理器接口进行耦合;还包括几种内丰管理单元的变种;包括简单的内存保护到复杂的内存保护到复杂的页面层次。例如,管理存储部件MMU就是ARM内核通过协处理器CP15实现对内存的管理。
3. Thumb指令
ARM有两种指令集:16位Thumb指令集和32位ARN指令集。使用16位的存储器可以降低成本,在这种情况下,Thumb指令集的整体执行速度比32位指令集快,而且提高了代码密度,所以一般用Thumb编译器将C语言程序编译成16位的代码。处理器一开始总在arm状态,可使用BX指令转换到Thumb状态。
4. 具有RISC指令的特点
由于ARM指令属于RISC指令,所以具有RISC指令的特点,指令少,且等长,便于充分利用流水线技术;使用多寄存器,且多为简单的Load与Store指令(从内存中读取某个值,执行完操作后再将其放回内存)。
5. 立即数和直接地址
由于指令统一为32位,无法在1条指令中存放32位立即数。一般立即数为5~12位。采用一些特殊的方法,使它能处理立即数。
同理,直接(或相对)地址一般为24位,但由于指令地址的低2位为00,故寻地范围为±226,相对地址为±225。
3.2 ARM指令系统
3.2.1 ARM指令的寻址方式
每条ARM指令都是32位指令,在大多数情况下,可以有3个操作数,其中第1个操作数或目的操作数一般为基本操作数方式。ARM指令的基本寻址方式有:
l寄存器寻址
例:
ADD R0,R1,R2 ;(R1)+(R2)→R0
l立即数寻址
例:
ADD R3,R3,#2 ;(R3)+2→R3
l寄存器间接寻址
例:
LDR R0,R0,[R3] ;((R3))→R0
l寄存器变址
例:
LDR R0,[R1,#4] ;((R1)+4)→R0
l相对寻址
例:
B rel ;(PC)+rel→PC
另外,每条ARM指令中还可以有第2条和第3条操作数,它们采用复合寻址方式,
- 什么是LED驱动时序?LCD背光驱动程序设计(04-26)
- LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码(04-25)
- wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点(04-26)
- ARM微处理器助记符指令及其功能描述(04-30)
- 布线工程师如何充分“掌控”时钟信号?(02-21)
- FPGA组成、工作原理和开发流程(10-13)