Lazy loaded image
安卓逆向
ARM指令集
字数 1575阅读时长 4 分钟
2021-11-30
2024-7-5
type
status
date
slug
summary
tags
category
icon
password

1 、LDR 和 STR

加载/存储字和无符号字节指令,使用单一数据传送指令(STR 和 LDR)来装载和存储,单一字节或字的数据从/到内存LDR指令用于从内存中读取数据放入寄存器中,STR指令用于将寄存器中的数据保存到内存。
指令格式如下:

2、LDM 和 STM

批量加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数,LDM 为加载多个寄存器,STM 为存储多个寄存器,允许一条指令传送 16 个寄存器任何子集或所有寄存器。LDM /STM 的主要用途是现场保护、数据复制、参数传送等。
指令格式如下:

3、 SWP

寄存器和存储器交换指令,SWP 指令用于将一个内存单元(该单元地址放在寄存器Rn 中)的内容读取到一个寄存器 Rd 中,同时将另一个寄存器 Rm 的内容写入到该内存单元中。
指令格式如下: SWP{cond}{B} Rd,Rm,[Rn]、
其中,B 为可选后缀,若有B,则交换字节,否则交换 32 位字;Rd 为数据从存储器加载到的寄存器;Rm 的数据用于存储到存储器中,若 Rm 与 Rn 相同,则为寄存器与存储器内容进行交换;Rn 为要进行数据交换的存储器地址,Rn 不能与 Rd 和 Rm 相同.
SWP 指令举例如下:
notion image

数据传送指令

4、MOV

数据传送指令,将 8 位图立即数或寄存器(operant2)传送到目标寄存器 Rd,可用于移位运算等操作。
指令格式如下:
MOV{cond}{S} Rd,operand2
MOV 指令举例如下:

5、MVN

数据非传送指令,将8 位图立即数或寄存器(operand2)按位取反后传送到目标寄存器(Rd),因为其具有取反功能,所以可以装载范围更广的立即数。
指令格式如下:
MVN{cond}{S} Rd,operand2
MVN 指令举例如下:

算术逻辑运算指令

6、ADD

加法运算指令,将 operand2 数据与 Rn 的值相加,结果保存到 Rd 寄存器。
指令格式如下:
ADD{cond}{S} Rd,Rn,operand2
ADD 指令举例如下:

7、SUB

减法运算指令,用寄存器 Rn 减去 operand2.结果保存到 Rd 中。
指令格式如下:SUB{cond}{S} Rd,Rn,operand2
SUB 指令举例如下:

8、RSB

逆向减法指令,用寄存器 operand2 减法 Rn,结果保存到 Rd 中。
指令格式如下:RSB{cond}{S} Rd,Rn,operand2
RSB 指令举例如下:

9、ADC

带进位加法指令,将 operand2 的数据与 Rn 的值相加,再加上 CPSR 中的 C 条件标志位,结果保存到 Rd 寄存器。
指令格式如下; ADC{cond}{S} Rd,Rn,operand2 ADC
指令举例如下:

10、SBC

带进位减法指令。用寄存器 Rn 减去 operand2,再减去 CPSR 中的 C 条件标志位的非(即若 C 标志清零,则结果减去 1),结果保存到 Rd 中。
指令格式如下: SCB{cond}{S} Rd,Rn,operand2
SBC 指令举例如下:

11、RSC

带进位逆向减法指令。用寄存器 operand2 减去 Rn,再减去 CPSR 中的 C 条件标志位,结果保存到 Rd 中。
指令格式如下:RSC{cond}{S} Rd,Rn,operand2
RSC 指令举例如下:

12、AND

逻辑与操作指令,将 operand2 值与寄存器 Rn 的值按位作逻辑与操作,结果保存到Rd 中。
指令格式如下: AND{cond}{S} Rd,Rn,operand2
AND 指令举例如下:

13、ORR

逻辑或操作指令,将operand2的值与寄存器Rn的值按位作逻辑或操作,结果保存到Rd 中。
指令格式如下:ORR{cond}{S} Rd,Rn,operand2 ORR
指令举例如下:

14、 EOR

逻辑异或操作指令。将operand2的值与寄存器Rn的值按位作逻辑异或操作,结果保存到 Rd 中。
指令格式如下: EOR{cond}{S} Rd,Rn,operand2
EOR 指令举例如下
上一篇
ARM汇编小结
下一篇
Python自动化构建雷电模拟器

评论
Loading...