ARM处理器当前有6个产品系列:ARM7、ARM9、ARM9E、ARM10E、ARM11和SecurCore,其中ARM11为最近推出的产品。进一步的产品来自于合作伙伴,例如Intel Xscale ARM7、ARM9、ARM9E、ARM10E是4个通用处理器系列。每个系列提供一套特定的性能来满足设计者对功耗、性能、体积的需求。
表1.3显示了ARM7、ARM9、ARM10及ARM11内核之间属性的比较。有些属性依赖于生产过程和工艺,具体芯片需参阅其芯片手册。
ARM7系列处理器主要应用于下面一些场合:个人音频设备(MP3播放器、WMA播放器、AAC播放器); 接入级的无线设备;喷墨打印机;数码照相机
Load/Store内存访问指令在ARM寄存器和存储器之间传送数据。ARM指令中有3种基本的数据传送指令。
异常或中断是用户程序中最基本的一种执行流程和形态。这部分主要对ARM架构下的异常中断做详细说明。
ARM采用的是32位架构,ARM的基本数据类型有以下3种。 Byte:字节,8bit。Halfword:半字,16bit。 Word:字,32bit。
大多数的用户程序运行在用户模式下。当处理器工作在用户模式时,应用程序不能够访问受操作系统保护的一些系统资源,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式切换。这种体系结构可以使操作系统控制整个系统资源的使用。
ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。表3.2显示了ARM的寄存器组织概要。
多寄存器Load/Store内存访问指令也叫批量加载/存储指令,它可以实现在一组寄存器和一块连续的内存单元之间传送数据。LDM用于加载多个寄存器,STM用于存储多个寄存器。多寄存器Load/Store内存访问指令允许一条指令传送16个寄存器的任何子集或所有寄存器。
MOV指令是最简单的ARM指令,执行的结果就是把一个数N送到目标寄存器Rd,其中N可以是寄存器,也可以是立即数。
MVN是反相传送(Move Negative)指令。它将操作数的反码传送到目的寄存器。MVN指令多用于向寄存器传送一个负数或生成位掩码。
交换指令是load/store指令的一种特例,它把一个寄存器单元的内容与寄存器内容交换。交换指令是一个原子操作(atomic operation),也就是说,在连续的总线操作中读/写一个存储单元,在操作期间阻止其他任何指令对该存储单元的读/写。
ARM指令集提供了两条指令,可直接控制程序状态寄存器(PSR,Program State Register)。MRS指令用于把CPSR或SPSR的值传送到一个寄存器;MSR与之相反,把一个寄存器的内容传送到CPSR或SPSR。这两条指令结合,可用于对CPSR和SPSR进行读/写操作。
逻辑异或EOR(Exclusive OR)指令将寄存器中的值和的值执行按位“异或”操作,并将执行结果存储到目的寄存器中,同时根据指令的执行结果更新CPSR中相应的条件标志位。
SBC(Subtract with Carry)带进位的减操作指令,用于执行操作数大于32位时的减法操作。该指令从寄存器中减去表示的数值,再减去寄存器CPSR中C条件标志位的反码(NOT(Carry flag))。并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
RSC(Reverse Subtract with Carry)带进位的翻转减操作指令,从寄存器中减去表示的数值,再减去寄存器CPSR中C条件标志位的反码(NOT(Carry Flag)),并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
RSC(Reverse Subtract with Carry)带进位的翻转减操作指令,从寄存器中减去表示的数值,再减去寄存器CPSR中C条件标志位的反码(NOT(Carry Flag)),并将结果保存到目标寄存器中,并根据指令的执行结果设置CPSR中相应的标志位。
TEQ(Test Equivalence)测试指令用于将一个寄存器的值和一个算术值做比较。条件标志位根据两个操作数做“逻辑或”后的结果设置。以便后面的指令根据相应的条件标志来判断是否执行。
CMP(Compare)比较指令使用寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。
CMN(Compare Negative)比较指令使用寄存器Rn的值减去operand2的负数值(加上operand2),根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。