Arm指令格式

ARM指令的编码格式 
实际指令语法格式为: 
ADDEQS R0,R1,R2; 
该指令的编码格式为: 

ARM指令的助记符 
ARM指令在汇编程序中用助记符表示,一般ARM指令的助记符格式为: 
{} {S} ,, 
其中: 
操作码,如ADD表示算术加操作指令; 
{} 决定指令执行的条件域; 
{S} 决定指令执行是否影响CPSR寄存器的值; 
目的寄存器; 
第一个操作数,为寄存器; 
第二个操作数。 
例如,指令 ADDEQS R1,R2,#5 

条件域 
几乎所有的ARM指令都可以根据当前程序状态寄存器CPSR中标志位的值,有条件地执行。 
ARM指令的条件域有16种类型。 

ARM指令中的第二操作数 
灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式: 
#immed_8r——常数表达式; 
Rm——寄存器方式; 
Rm,shift——寄存器移位方式 

ARM指令中的第二操作数 
如果一个32位立即数直接用在32位指令编码中,就有可能完全占据32位指令编码空间。因此,ARM指令的32位立即数是通过循环右移偶数位得到的。 
立即数是由一个8位的常数循环右移位偶数位得到的。 
=immed_8循环右移(2×rotate_imm) 
例如:下面的代码段: 
MOV R0, #0x0000F200 
MOV R1, #0x00110000 
MOV R4, #0x00012800 
上面的指令经过汇编之后得到的二进制编码为: 
8000:E3A00CF2 (0xF200是由0xF2循环右移24位得到的) 
8004:E3A01811(0x110000是由0x11循环右移16位得到的) 
8008: E3A04B4A(0x12800是由0下4A循环右移24位得到的) 
非法的立即数:0x1010,0x00102,0xFF1000 

你可能感兴趣的:(ARM汇编)