好东西,说得非常详细的。要做底层的可以看看
ARM指令集详解
发布: 2010-3-19 11:42 | 作者: Saiu | 来源: MCU嵌入式领域
ARM可以用两套指令集:ARM指令集和Thumb指令集。本文介绍ARM指令集。在介绍ARM指令集之前,先介绍指令的格式。
1 指令格式
(1)基本格式
{}{S} ,{,}
其中,<>内的项是必须的,{}内的项是可选的,如是指令助记符,是必须的,而{}为指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)。 opcode 指令助记符,如LDR,STR 等 cond 执行条件,如EQ,NE 等
S 是否影响CPSR 寄存器的值,书写时影响CPSR,否则不影响 Rd 目标寄存器
Rn 第一个操作数的寄存器 operand2 第二个操作数 指令格式举例如下:
LDR R0,[R1] ;读取R1 地址上的存储器单元内容,执行条件AL BEQ DATAEVEN ;跳转指令,执行条件EQ,即相等跳转到DATAEVEN ADDS R1,R1,#1 ;加法指令,R1+1=R1 影响CPSR 寄存器,带有S
SUBNES R1,R1,#0xD;条件执行减法运算(NE),R1-0xD=>R1,影响CPSR 寄存器,带有S (2)第2个操作数
在ARM 指令中,灵活的使用第2个操作数能提高代码效率,第2个操作数的形式如下: #immed_8r
常数表达式,该常数必须对应8 位位图,即常数是由一个8 位的常数循环移位偶数位得到。 合法常量
0x3FC、0、0xF0000000、200、0xF0000001等都是合法常量。 非法常量
0x1FE、511、0xFFFF、0x1010、0xF0000010等都是非法常量。