ARM指令集小记
来源:互联网 发布:知我药妆官方旗舰店 编辑:程序博客网 时间:2024/06/16 21:20
Arm七种操作模式:
用户(usr)、系统(sys)、快中断(fiq)、中断(irq)、管理(svc)、中止(abt)、未定义(und)
MOV
MOV
MOV
MVN
CMP R1,R0
CMP R1,#100
CMN R1,R0
CMN R1,#100
TST指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值。操作数1是要测试的数据,而操作数2是一个位掩码,该指令一般用来检测是否设置了特定的位。
TST
TST
TEQ指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运算结果更新CPSR中条件标志位的值。该指令通常用于比较操作数1和操作数2是否相等。
TEQ
ADD
ADD
ADD
以下指令序列完成两个128位数的加法,第一个数由高到低存放在寄存器R7~R4,第二个数由高到低存放在寄存器R11~R8,运算结果由高到低存放在寄存器R3~R0:
ADDS R0,R4,R8
ADCS R1,R5,R9
ADCS R2,R6,R10
ADC
SUB
SUB
SUB
SUBS
SUBS
SBC指令用于把操作数1减去操作数2,再减去CPSR中的C条件标志位的反码,并将结果存放到目的寄存器中。该指令使用进位标志来表示借位,这样就可以做大于32位的减法。
SBC
RSB
RSB
RSB
RSC指令用于把操作数2减去操作数1,再减去CPSR中的C条件标志位的反码,并将结果存放到目的寄存器中。
RSC
该指令常用于屏蔽操作数1的某些位。逻辑与运算
AND
该指令常用于设置操作数1的某些位。逻辑或运算
ORR
EOR指令用于在两个操作数上进行逻辑异或运算。
EOR
BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。操作数2为32位的掩码,如果在掩码中设置了某一位,则清除这一位。未设置的掩码位保持不变。
BIC
MUL
MULS
MLA R0,R1,R2,R3
MLAS R0,R1,R2,R3
SMULL
SMLAL R0,R1,R2,R3;R0=(R2 ×R3)的低32位+R0,R1=(R2×R3)的高32位+R1
UMULL R0,R1,R2,R3
UMLAL R0,R1,R2,R3
LDR
LDR
LDR
LDR
LDR
LDR
LDR
LDRB R0,[R1]
LDRB
LDRH R0,[R1]
LDRH R0,[R1,#8]
LDRH R0,[R1,R2]
STR
STR
STRB
STRB
STRH
STRH
{!}为可选后缀,若选用该后缀,则当数据传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变;
基址寄存器不允许为R15,寄存器列表可以为R0~R15的任意组合;
{∧}为可选后缀,当指令为LDM且寄存器列表中包含R15,选用该后缀时表示:除了正常的数据传送之外,还将SPSR复制到CPSR。同时,该后缀还表示传入或传出的是用户模式下的寄存器,而不是当前模式下的寄存器。
STMFD
LDMFD
LDMFD
SWP R0,R1,[R2]
SWP R0,R0,[R1]
SWPB R0,R1,[R2]
SWPB R0,R0,[R1]
MRS R0,CPSR
MRS R0,SPSR
- ARM指令集小记
- ARM指令重难点小记
- ARM 汇编中的跳转指令小记
- ARM指令集--移位指令
- ARM 指令集>>跳转指令
- ARM指令集 LDR指令
- ARM 指令集 比较指令
- arm指令集比较指令
- arm指令集分支指令
- ARM指令集
- ARM 指令集
- ARM指令集
- ARM 指令集
- ARM指令集
- ARM 指令集摘要
- ARM、THUMB指令集
- ARM指令集
- ARM汇编指令集
- 漩涡鸣人
- 讲讲volatile的作用
- (*(volatileunsigned ……
- 【转】ARM9硬件接口学习之一
- C_语法_宏定义define和函数的作用…
- ARM指令集小记
- 解释和编译
- linux设备驱动makefile文件
- 关于linux块设备和字符设备的举例
- python利用字典保存配置实现动态调用模块类方法
- 【转】Linux2.6内核驱动与2.4的区…
- union
- 网上找的linux内核编译各种资料
- windows下visualbox+ubuntu开机自…