指令系统一寻址方式及跳转.pdf
简介
•ARM微处理器的指令集是加载/型的,
也即指令集仅能处理寄存器中的数据,而
且处理结果都要放回寄存器中,而对系统
器的则需要通过专门的加载/
指令来完成。
•ARM微处理器的指令集可以分为跳转指令、
数据处理指令、程序状态寄存器(PSR)
处理指令、加载/指令、协处理器指令和
异常产生指令六大类。
ARM指令格式
opcode{cond}{S}Rd,Rn{,opcode2}
其中,内的项是必须的,{}内的项是可选的,如opcode是指令助记符,是必须
的,而{cond}为指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)。
opcode指令助记符,如LDR,STR,MOV,ADD等
cond执行条件,如EQ,NE
S是否影响CPSR寄存器的值,书写时影响CPSR,否则不影响
Rd目标寄存器
Rn第一个操作数的寄存器
operand2第二个操作数
指令的条件域
•当处理器工作在ARM状态时,几乎所有的指令均根据
CPSR中条件码的状态和指令的条件域有条件的执行。当
指令的执行条件满足时,指令被执行,否则指令被忽略。
•每一条ARM指令包含4位的条件码,位于指令的最高4位
[31:28]。条件码共有16种,每种条件码可用两个字符表示,
这两个字符可以添加在指令助记符的后面和指令同时使用。
例如,跳转指令B可以加上后缀EQ变为BEQ表示“相等则跳
转”,即当CPSR中的Z标志置位时发生跳转。
•在16种条件标志码中,只有15种可以使用,如表3-2所示,
第16种(1111)为系统保留,暂时不能使用。
条件码助记符后缀标志含义
0000EQZ置位相等
0001NEZ不相等
0010CSC置位无符号数大于或等于
0011CCC无符号数小于
0100MIN置位负数
0101PLN正数或零
0110VSV置位溢出
0111VCV未溢出
1000HIC置位Z无符号数大于
1001LSCZ置位无符号数小于或等于
1010GEN等于V带符号数大于或等于
1011LTN不等于V带符号数小于
1100GTZ且(N等于V)带符号数大于
1101LEZ置位或(N不等于V)