目录

嵌入式系统-概述ARM指令

嵌入式系统-概述+ARM指令

嵌入式系统-概述+ARM指令

嵌入式系统是以应用为中心,以计算机技术为基础,采用可裁剪软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户应用程序四部分组成。

简单说,网吧里的电脑是通用计算机,而 mp3

、豆浆机等内含的都有嵌入式系统。嵌入式系统的特点是功耗低、体积小、成本低。

ARM 微处理器是主流的嵌入式处理器。

嵌入式操作系统有: Windows CE

Android

VxWorks

等。

ARM 的全称是

Advanced RISC Machine

RISC ,

Reduced Instruction Set Computer

,精简指令集计算机,与之相对的是

Complex ISC

。前者因指令集简单,所以硬件电路简单,故价格低。

ARM 处理器支持两种指令集:

ARM

指令集(

32

位)、

Thumb

指令集

(16

)

。对应相应两种状态。

操作数寄存器的状态位(位 0

)为

1

时,可以采用执行

BX

指令的方法,使微处理器从

ARM

状态切换到

Thumb

状态。

ARM 有用户模式和特权模式。

异常: Exception

。原有流程被打断,转而执行新的流程叫异常。例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。

ARM的数据存储

ARM 有:

31 个通用寄存器,均为

32

位的寄存器;具体有三类——未分组寄存器

R0

R7

,分组寄存器

R8

R14

,程序计数器

PC(R15)

R13 在

ARM

指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。

6 个状态寄存器,用以标识

CPU

的工作状态及程序的运行状态,均为

32

位。

寻址空间为 4G

数据存储有小端模式——低地址存储数据的高位和大端模式——低地址存储数据的低位。

ARM 微处理器中支持字节(

8

位)、半字(

16

位)、字(

32

位)三种数据类型,其中,字需要

4

字节对齐(地址的低两位为

0

)、半字需要

2

字节对齐(地址的最低位为

0

ARM的寻址

1.立即数寻址;

其实并不需要真正的寻址,操作数已经在指令中了。立即数一般以‘

’为前缀。

2.寄存器寻址;

操作数在寄存器中,不需访问存储器。

3.寄存器移位寻址;

add r1,r1,r2,ror #0x2;         ;r2 循环右移两位后与

r1

相加,结果放入

r1

中。

4.寄存器间接寻址;

此时寄存器中存储的是地址。

str r1,[r2]       ; 将

r1

的值存入

r2

所指地址的存储器中

5.基址变址寻址;

6.多寄存器寻址;

ldmia r0,{r1,r2,r3,r4,r5};r0->r1,r0+4->r2,…,r0+16->r5

7.堆栈寻址;

栈是一种后进先出的数据结构。栈指针始终指向栈顶,这个寄存器一般是 R13.

相对寻址;

RAM指令简介

load/store ——从存储器中读某个值

,

操作完后再将其放回存储器中

ARM 指令的一般格式见下:

 {} {S}     ,{,}

<> 表示必须;

{}

表示可选。

Rd :目标寄存器; Rn :第

1

个操作数的寄存器;

1.跳转指令

将程序计数器 PC

的值改写为跳转目的地址。

mov PC,#immediate

B (Branch)

基本跳转指令。 B{condition},Label1

BL(Branch with Link)

带连接的跳转指令。在跳转之前,会先将下一条要执行的指令地址放到 R14

中,一般用于函数调用。

BX(Branch and eXchange)

用于 ARM

Thumb

状态间的转换。

2.mov

MOV   Rd,operand2 ;数据传送, Rd

operand2

3.add adc

ADD     R1,R1,R2,LSL #2       ;R1=R1+R2«2

4.sub sbc

SUBS R0,R0,#240 ;R0=R0-240 ,并影响标志位

5.and orr

分别是 c++

中的

&& ||

6.cmp

cmp  Rn ,

Operand2

Rn

寄存器的值减去

operand2

的值,除了最后的计算结果被丢弃外,整个过程和

subs

相同。

7.mul

乘法指令

ARM开发IDE

ADS(ARM Developer Suite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。

https://img-blog.csdn.net/20140526202927671