【ARM指令集详解】 ARM指令集是ARM架构处理器的基础,其中包含了各种操作指令,用于执行计算、控制流程、数据处理等任务。ARM920T内核的指令集是ARM指令集的一个具体实现,适用于嵌入式系统和移动设备。 **1. 指令格式** ARM指令集的格式通常由32位组成,分为几个主要部分:操作码、操作数、条件码等。某些位可能被保留未定义,目的是为了未来扩展或改变指令的行为。例如,将乘法指令的第六位改为1会导致未定义的指令,因为这种形式的指令在当前实现中无效,可能会在未来的ARM架构中改变其功能。 **2. 指令摘要** - **ADC**(带进位加法):Rd = Rn + Op2 + Carry,会考虑进位位。 - **ADD**(加法):Rd = Rn + Op2,简单的加法操作。 - **AND**(逻辑与):Rd = Rn AND Op2,按位逻辑与。 - **B**(跳转):R15 = address,无条件跳转到指定地址。 - **BIC**(位清零):Rd = Rn AND NOT Op2,清除Op2中为1的位。 - **BL**(带返回的跳转):R14 = R15, R15 = address,跳转并保存返回地址。 - **BX**(带状态切换的跳转):R15 = Rn, T bit = Rn[0],跳转并切换处理器状态。 - **CDP**(协处理器数据处理):用于处理协处理器的特定操作。 - **CMN**(比较反值):CPSR flags = Rn + Op2,比较Rn与Op2的反值。 - **CMP**(比较):CPSR flags = Rn - Op2,比较Rn与Op2。 - **EOR**(异或):Rd = (Rn AND NOT Op2) OR (Op2 AND NOT Rn),按位异或。 - **LDC**/**STC**(协处理器数据传输):在CPU寄存器与协处理器之间传输数据。 - **LDM**/**STM**(多寄存器加载/存储):加载或存储多个寄存器到内存。 - **LDR**/**STR**(从内存加载/存储到寄存器):将数据从内存加载到寄存器,或将寄存器数据存储到内存。 - **MCR**/**MRC**(CPU寄存器与协处理器之间的数据传输):双向数据传输。 - **MRS**/**MSR**(CPSR/SPSR与通用寄存器之间的传输):读取或设置程序状态寄存器。 - **MUL**(32位乘法):Rd = Rm × Rs,简单的乘法操作。 - **MVN**(数据取反传送):Rd = 0 × FFFFFFFF EOR Op2,对操作数取反。 - **ORR**(逻辑或):Rd = Rn OR Op2,按位逻辑或。 - **RSB**(逆向减法):Rd = Op2 - Rn,Rn减去Op2。 - **RSC**(带借位的逆向减法):Rd = Op2 - Rn - 1 + Carry,带借位的逆向减法。 - **SBC**(带借位减法):Rd = Rn - Op2 - 1 + Carry,带借位的减法。 - **SUB**(减法):Rd = Rn - Op2,简单的减法操作。 - **SWI**(软件中断):OS call,调用操作系统服务。 - **SWP**(交换):Rd = [Rn], [Rn] := Rm,寄存器与内存位置的原子交换。 - **TEQ**(相等测试):CPSR flags = Rn EOR Op2,测试Rn是否等于Op2。 - **TST**(位测试):CPSR flags = Rn AND Op2,测试Rn与Op2的按位与结果。 **3. 条件域** 在ARM模式下,大部分指令都根据CPSR(Current Program Status Register)中的条件码有条件地执行。条件码是4位的,位于指令的最上4位[31:28]。有16种不同的条件码,如:EQ(相等)、NE(不等)、CS(无符号大于等于)、CC(无符号小于)等。这些条件码可以附加在指令助记符后,例如BEQ表示在条件满足时执行跳转。如果条件码是AL,则表示无条件执行。 **4. 寻址方式** - **立即寻址**:操作数直接在指令中给出,如ADD R0, R0, #1,将R0加1。 除了立即寻址,ARM还支持其他寻址方式,如寄存器寻址、寄存器间接寻址、偏移寻址、预增/预减寻址等,这些寻址方式使得ARM指令集能够灵活地处理不同类型的地址计算。 了解并掌握ARM指令集对于编写高效的ARM汇编代码至关重要,特别是在需要低级性能优化或与硬件直接交互的场合。通过熟练运用这些指令,开发者能够实现更精细的控制,并优化系统的性能。
剩余17页未读,继续阅读
- 粉丝: 23
- 资源: 44
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MATLAB【面板】车辆检测.zip
- MATLAB【面板】车牌出入库计费系统.zip
- MATLAB【面板】车道线检测定位.zip
- MATLAB【面板】车牌识别.zip
- 微电网,下垂控制(三相交流) 传统阻感型下垂控制输出有功 无功 频率波形
- MATLAB【面板】车牌号码出入库管理.zip
- MATLAB【面板】车牌识别设计.zip
- MATLAB【面板】车牌识别GUI实现.zip
- MATLAB【面板】车牌识别GUI界面.zip
- MATLAB【面板】答题卡识别GUI.zip
- MATLAB【面板】虫害检测.zip
- MATLAB【面板】答题卡自动识别系统.zip
- MATLAB【面板】答题卡识别系统.zip
- MATLAB【面板】打印纸缺陷检测GUI设计.zip
- MATLAB【面板】道路桥梁裂缝检测.zip
- 八木天线计算器,如果您想制作天线,这个计算器非常好用