By:Ailson Jack
Date:2016.04.14
个人博客:www.only2fire.com
本文在我博客的地址是:http://www.only2fire.com/archives/69.html,排版更好,便于学习。
ARM的数据处理指令大致可以分为3类:数据传送指令,运算指令,比较指令。
数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据传送或算术逻辑运算指令均可选择使用S后缀,以使指令影响CPSR中的标志。
1、ARM指令集-基本指令格式
ARM是三地址指令格式,指令的基本格式如下:
<opcode> {<cond>} {S} <Rd> ,<Rn>{,<operand2>}
其中<>号内的项是必须的,{} 号内的项是可选的。各项的说明如下:
opcode:指令助记符;
cond:执行条件;
S:是否影响CPSR寄存器的值;
Rd:目标寄存器;
Rn:第1个操作数的寄存器;
operand2:第2个操作数;
灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式:
1)、#immed_8r——常数表达式:
如:ADD R0, R1, #3 ;R0 = R1 + 3
2)、Rm——寄存器方式:
如:SUB R0, R1, R2 ;R0 = R1 – R2
3)、Rm,shift——寄存器移位方式:
如:ADD R0, R1, R2, LSL, #3 ;R0 = R1 + R2<<3
2、数据传送指令
ARM的数据传送指令有两条,如下所示:

注:当后缀有S时,这些指令根据结果更新标志N和Z,在计算Operand2时更新标志C,不影响标志V。
3、运算指令
1)、算术运算指令

注:当后缀有S时,这些指令根据结果更新标志N、Z、C、V。
2)、逻辑运算指令

注:当后缀有S时,这些指令根据结果更新标志N和Z,在计算Operand2时更新标志C,不影响标志V。
4、比较指令

注:这些指令直接影响N,Z,C和V标志位(不需要加后缀S)。
MOV R0, #3
CMN R0, #-2 ;Z=0
CMN R0, #-3 ;Z=1
CMN可以理解为,判断两个数是否互为相反数。
排版更好的内容见我博客的地址:http://www.only2fire.com/archives/69.html
注:转载请注明出处,谢谢!^_^
本文介绍了ARM的数据处理指令,包括数据传送、运算和比较指令。数据处理指令只能操作寄存器内容,部分指令可加S后缀影响CPSR标志。还阐述了ARM指令集基本格式,以及第2个操作数的不同形式,同时说明了各类指令对标志位的影响。
1881

被折叠的 条评论
为什么被折叠?



