条件执行
2017-9-25
ARM指令码的高4位存储条件执行码,指令依据此条件码和CPSR的标志位,决定是否执行。Condition code[31:28]MnemonicextensionInterpretationStatus flag state for execution0000EQEqual / equals zer
跳转指令
2017-9-25
实现跳转可以通过跳转指令,也可以直接设置PC(r15)寄存器的值。1 B and BL语法:B{cond} labelBL{cond} labelB跳转到标签处执行。BL将下一条指令的地址存储到r14(lr),然后跳转到标签处执行。B/BL是相对PC寄存器的跳转,跳转范围为+/-32MB。由于是PC
数据处理指令:第二操作数
2017-9-26
大多数数据处理指令有一个灵活的第二操作数。主要有3种形式:1 立即数,#imme2 寄存器,Rm3 寄存器移位,Rm, shift移位方式有:算术右移,逻辑左移,逻辑右移,循环右移,扩展循环右移1位。移位的数位可以是数字,也可以寄存器指定,寄存器的话,只使用least significant byt
数据处理指令:比较指令
2017-9-26
比较指令和测试指令的目的是修改CPSR的标志位,以便影响下一条指令条件执行。语法:CMP{cond} Rn, Operand2CMN{cond} Rn, Operand2这两条指令的执行结果不会放入任何寄存器,单纯用于影响标志位。CMP执行Rn-Operand2,除了结果被丢掉外,等价于SUBS。C
数据处理指令:测试指令
2017-9-27
Test和Test Equivalence指令,对两个操作数进行按位操作。语法:TST{cond} Rn, Operand2TEQ{cond} Rn, Operand2这两条指令的目的是更新条件标志位,结果不放入任何寄存器。TST指令对两个操作数进行按位与(bitwise AND)操作。除了结果被丢
数据处理指令:算术运算
2017-9-27
支持加(add)、减(subtract)、反向减(reverse subtract)。支持进位和无进位。语法:ADD{cond}{S} Rd, Rn, Op2 @Rd = Rn + Op2SUB{cond}{S} Rd, Rn, Op2 @Rd = Rn - OP2RSB
数据处理指令:逻辑运算
2017-9-27
支持与(AND)、或(OR)、异或(Exclusive OR)和位清除(bit clear)4种运算。语法:AND{cond}{S} Rd, Rn, Op2ORR{cond}{S} Rd, Rn, Op2EOR{cond}{S} Rd, Rn, Op2BIC{cond}{S} Rd, Rn, Op2
数据处理指令:数据移动指令
2017-9-27
将第二操作数的值,或者第二操作数的值按位取反,移入寄存器。语法:MOV{cond}{S} Rd, Op2MVN{cond}{S} Rd, Op2前者,Rd = Op2。后者,Rd = ~Op2。
协处理器指令
2017-9-27
协处理器指令用于在协处理器和ARM寄存器之间传送数据。Move to coprocessor from ARM registers:MCR{cond} coproc, opcode1, Rd, CRn, CRm{, opcode2}MCR2 coproc, opcode1, Rd, CRn, CRm
内存访问指令
2017-10-31
ARM的数据处理指令不涉及任何内存访问,需要专门的内存访问指令(memory access instructions)来读取内存或写入内存。1 LDR/STR words与unsigned bytes加载寄存器或存储寄存器,32位字或8位无符号字节。字节加载是zero-extended到32位。语法
Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.