嵌入式系统-概述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 指令的一般格式见下:
<> 表示必须;
{}
表示可选。
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处理器下最主要的开发工具。