ARM7的全部指令详细讲解
时间: 2023-09-26 13:14:01 浏览: 120
ARM7指令集
ARM7指令集包含了大量的指令,以下是ARM7的全部指令及其功能的详细讲解:
1. 数据处理指令
- AND:对两个寄存器中的数据进行逻辑与操作,并将结果存储到另一个寄存器中
- EOR:对两个寄存器中的数据进行异或操作,并将结果存储到另一个寄存器中
- SUB:将两个寄存器中的数据相减,并将结果存储到另一个寄存器中
- RSB:将一个寄存器中的数据减去另一个寄存器中的数据,并将结果存储到另一个寄存器中
- ADD:将两个寄存器中的数据相加,并将结果存储到另一个寄存器中
- ADC:将两个寄存器中的数据相加,再加上进位标志位,并将结果存储到另一个寄存器中
- SBC:将一个寄存器中的数据减去另一个寄存器中的数据,再减去进位标志位,并将结果存储到另一个寄存器中
- RSC:将一个寄存器中的数据减去另一个寄存器中的数据,再减去反向进位标志位,并将结果存储到另一个寄存器中
- TST:对两个寄存器中的数据进行逻辑与操作,并根据结果设置标志寄存器
- TEQ:对两个寄存器中的数据进行异或操作,并根据结果设置标志寄存器
- CMP:比较两个寄存器中的数据,并根据比较结果设置标志寄存器
- CMN:将两个寄存器中的数据相加,并根据结果设置标志寄存器
- ORR:对两个寄存器中的数据进行逻辑或操作,并将结果存储到另一个寄存器中
- MOV:将数据从一个寄存器传送到另一个寄存器
- BIC:对一个寄存器中的数据进行位清除操作,并将结果存储到另一个寄存器中
- MVN:对一个寄存器中的数据进行位求反操作,并将结果存储到另一个寄存器中
2. 数据传输指令
- LDR:从内存中读取一个字(32位数据)并将其存储到寄存器中
- STR:将寄存器中的数据存储到内存中
- LDRB:从内存中读取一个字节(8位数据)并将其存储到寄存器中
- STRB:将一个字节的数据存储到内存中
- LDRH:从内存中读取一个半字(16位数据)并将其存储到寄存器中
- STRH:将一个半字的数据存储到内存中
- LDM:从内存中读取多个字(32位数据)并将它们存储到寄存器中
- STM:将多个字(32位数据)存储到内存中
- SWP:交换寄存器中的数据和内存中的数据
3. 分支指令
- B:无条件跳转到指定的地址
- BL:跳转到指定的地址,并将跳转前的地址存储到链接寄存器中,用于函数调用
- BX:跳转到指定的地址,并根据目标地址的最低位判断跳转到Thumb模式或ARM模式
- BLX:跳转到指定的地址,并将跳转前的地址存储到链接寄存器中,用于函数调用,并根据目标地址的最低位判断跳转到Thumb模式或ARM模式
4. 状态寄存器操作指令
- MRS:将当前处理器模式下的状态寄存器中的值存储到寄存器中
- MSR:将指定寄存器中的值存储到当前处理器模式下的状态寄存器中
5. 协处理器指令
- CDP:执行协处理器数据处理指令
- LDC:从协处理器中读取数据
- STC:将数据存储到协处理器中
6. 异常处理指令
- SWI:调用操作系统功能,用于实现软中断
- BKPT:用于断点调试
这些指令覆盖了ARM7指令集的大部分功能,但并不是全部。ARM7还包含了一些特殊指令,例如NOP(无操作指令)和SEV(发送事件指令)。
阅读全文