4.2指令集介绍 ·ARM指令集一第2个操作数 ARM指令的基本格式如下: <opcode>{<cond>}{S} <Rd>,<Rn>{,<operand2>} 灵活的使用第2个操作数“operand:2”能够提高代码 效率。它有如下的形式: ■#immed8r—常数表达式; Rm一寄存器方式; ■Rm,shift-一寄存器移位方式;
ARM指令的基本格式如下: 4.2 指令集介绍 • ARM指令集——第2个操作数 <opcode> {<cond>} {S} <Rd> ,<Rn>{,<operand2>} 灵活的使用第2个操作数“ operand2”能够提高代码 效率。它有如下的形式: ▪#immed_8r——常数表达式; ▪Rm——寄存器方式; ▪Rm,shift——寄存器移位方式;
4.2指令集介绍 ·ARM指令集一第2个操作数 ■#immed8r一常数表达式 该常数必须对应8位位图,即一个8位的常数通过 循环右移偶数位得到。 循环右移10位 L00000000000000000000:000000010010-J 0x00 0x00 0x00 0x12 8位常数 00000100100000000000000000000000 0x04 0x80 0x00 0x00
4.2 指令集介绍 • ARM指令集——第2个操作数 ▪#immed_8r——常数表达式 该常数必须对应8位位图,即一个8位的常数通过 循环右移偶数位得到。 循环右移10位 0x12 0 0 0 1 0 0 1 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x00 0 0 0 0 0 0 0 0 0x80 1 0 0 0 0 0 0 0 0x04 0 0 0 0 0 1 0 0 8位常数
4.2指令集介绍 ·ARM指令集一第2个操作数 ■#immed8r—常数表达式 该常数必须对应8位位图,即一个8位的常数通过 循环右移偶数位得到。 例如: MOV R0,#1 AND R1,R2,#0x0E
4.2 指令集介绍 • ARM指令集——第2个操作数 ▪#immed_8r——常数表达式 该常数必须对应8位位图,即一个8位的常数通过 循环右移偶数位得到。 例如: MOV R0,#1 AND R1,R2,#0x0F
4.2指令集介绍 ·ARM指令集一第2个操作数 Rm一寄存器方式 在寄存器方式下,操作数即为寄存器的数值。 例如: SUB R1,R1,R2 MOV PC,RO
4.2 指令集介绍 • ARM指令集——第2个操作数 ▪Rm——寄存器方式 在寄存器方式下,操作数即为寄存器的数值。 例如: SUB R1,R1,R2 MOV PC,R0
4.2指令集介绍 ·ARM指令集一第2个操作数 Rm,shift-一寄存器移位方式 将寄存器的移位结果作为操作数,但R值保持不 变,移位方法如下: 操作码 说明 操作码 说明 ASR #n 算术右移n位 ROR #n 循环右移n位 LSL #n 逻辑左移n位 RRX 带扩展的循环右移1位 LSR #n 逻辑右移n位 Type Rs Type为移位的一种类型,Rs 为偏移量寄存器,低8位有效
4.2 指令集介绍 • ARM指令集——第2个操作数 ▪Rm,shift——寄存器移位方式 将寄存器的移位结果作为操作数,但Rm值保持不 变,移位方法如下: 操作码 说明 操作码 说明 ASR #n 算术右移n位 ROR #n 循环右移n位 LSL #n 逻辑左移n位 RRX 带扩展的循环右移1位 LSR #n 逻辑右移n位 Type Rs Type为移位的一种类型,Rs 为偏移量寄存器,低8位有效