跳转指令

B      无条件跳转
BL 带链接的无条件跳转
BX 带状态切换的无条件跳转
BLX 带链接和状态的无条件跳转

存储器与寄存器交互数据指令(核心)

存储器:主存和内存

寄存器中放的数据:可以是字符串,可以是数,也可以是一个地址,他可以放各种类型的数据

存储地址单元:地址(如如0x00004000)与地址中存在的值

LDR:从存储器中加载数据到存储器←Load
LDR R8,[R9,#] R8为待加载数据的寄存器,加载值为R9+0x4所指向的存储单元 STR:将寄存器的数据存储到存储器中→Store
STR R8,[R9,#] 将R8寄存器的数据存储到R9+0x4所指向的存储单元 LDM:将存储器的数据加载到寄存器列表→
LDM R0,{R1-R3}将R0指向的存储单元的数据依次加载到R1,R2,R3寄存器 STM:将一个寄存器列表的数据存储到指定的存储器中
PUSH:将寄存器值推入堆栈
POP:将堆栈值推出到寄存器
SWP:将寄存器与存储器之间的数据进行交换
SWP R1, R1 [R0] 将R1寄存器与R0指向的存储单元的内容进行交换

堆,队列:数据结构,栈是竖的,后进先出,且只能从栈顶依次填入数据

数据传输指令

MOV:将立即数或寄存器的数据传送到目标寄存器
MOV R0, # :R0=0x8

数据算数指令

ADD:+
SUB:—
MUL:*
DIV: /

数据逻辑运算指令

与:AND
或:ORR
异或:EOR
LSL:逻辑左移←
LSR:逻辑右移→
LSL R0,R1,#:R0=R1*

移位:实质是乘,除,类似于小数点移位,但相反。小数点左移,数变小;右移变大。

但逻辑移位,左移变大,右移变小,且按2的倍数进行,因为是2进制。

比较指令

CMP:比较
CMP R0 #:R0寄存器中的值与0比较

标志位:如z位,这个都可以在动态调试时,寄存器窗口看到

其他指令

协处理器指令:SWT (切换用户模式)
伪指令:DCB

寄存器寻址方式

立即寻址:MOV R0,#→R0=0X1234
寄存器寻址:MOV R0,R1→R0=R1
寄存器移位寻址:MOV R0,R1,LSL #→R0=R1*
寄存器间接寻址:LDR R0,[R1]→将R1寄存器中的值作为地址,取出地址中的值赋予R0
寄存器间接基址偏移寻址:LDR R0,[R1,#-]→将R1寄存器的值-0x4的值作为地址,取出地址中的值给R0

对int a=0;这一句简单高级语言的汇编理解

首先会开辟一个内存存储单元,然后把0x0这个数放入R0寄存器,然后再把R0寄存器的数据放入内存存储单元。所以:MOV R0,#0 STR R0,[R11,#0x14+var_20]

注意:变量要看存储单元地址,不要以为是寄存器,简单时可以这么看,但试想,如果寄存器是变量,那得要多少寄存器。寄存器就是一个桥梁,和存储器即存储单元地址交互的东西。

【安卓逆向】ARM常见汇编指令总结的更多相关文章

  1. 常见寄存器以及常见汇编指令,常见爆破指令 good

    CPU的任务就是执行存放在存储器里的指令序列.为此,除要完成算术逻辑操作外,还需要担负CPU和存储器以及I/O之间的数据传送任务.早期的CPU芯片只包括运算器和控制器两大部分.到了近几年,为了使存储器 ...

  2. ARM 常用汇编指令

    ARM 汇编程序的框架结构 .section .data <初始化的数据> .section.bss <未初始化的数据> .section .text .global _sta ...

  3. ARM 内核 汇编指令 的 8种 寻址方式

    str: store register ->指令将寄存器内容存到内存空间中, ldr:  load register 将内存内容加载到通用寄存器, ldr/str 组合来实现ARM CPU 和内 ...

  4. ARM常用汇编指令介绍

    b     跳转指令(跳转范围为32Mb) bl    带返回地址的跳转,指令自动将下一条指令的地址复制到R14寄存器,然后跳转到指定地址去执行,执行完后返回到下一条指令处执行 pc    寄存器R1 ...

  5. 1.汇编指令介绍(arm)

    本文作为本人学习过程中的记录及时不时的突发奇想偶记.鄙人菜鸟一只,文中如有错误或疏漏,若读者肯不吝赐教,在下感激零涕.文章一直不断更新中 一.汇编语言 汇编语言是一种应用计算机.微处理器.微控制器或其 ...

  6. 常用ARM汇编指令

    常用ARM汇编指令 [日期:2012-07-14] 来源:Linux社区  作者:xuyuanfan77 [字体:大 中 小]     在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初 ...

  7. ARM汇编指令的一些总结-转

    ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch ...

  8. 逆向---03.mov、test等汇编指令、EAX、关键Call、OD调试技巧

    上一篇:逆向---02.je & jmp & jnz .OD调试 基础知识:(栗子中也会说的)栗子:链接: https://pan.baidu.com/s/1qZbbTvQ 密码: i ...

  9. ARM体系结构和汇编指令

    第一节 可编程器件的编程原理 1. 可编程器件的特点 1 . CPU在固定频率的时钟控制下节奏运行 2 . CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行 3 . 这些可以被CPU解 ...

随机推荐

  1. 解决DFS Locations从Eclipse的Navigator中消失的问题

    尝试了这篇博客https://blog.csdn.net/qq_40120951/article/details/85028976所说的解决办法,但对我没用. 最后是重新打开Map/Reduce解决的 ...

  2. 国内下载Git的连接地址

    Git国内下载: https://github.com/waylau/git-for-win  

  3. Linux - mysql 异常: ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

    问题描述 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists 解决方案 删除:/var/lock/su ...

  4. 二分-A - Cable master

    A - Cable master Inhabitants of the Wonderland have decided to hold a regional programming contest. ...

  5. 常用UrlEncode编码结果

    空格 ! # $ % + @ : = ? %20 %21 %23 %24 %25 %2B %40 %3A %3D %3F

  6. 《Mongo权威指南》学习手记

    1.ObjectId: 是“_id”的默认类型.mongo没有用自增主键原因:多个服务器同步自动增加主键值费时费力. mongo初衷是作分布式数据库,所以能在分片环境中生成唯一的标示符非常重要. Ob ...

  7. 题解【洛谷P6029】[JSOI2010]旅行

    题面 简化版题意:给出 \(n\) 个点 \(m\) 条边的无向图,可以交换任意两条边的权值 \(k\) 次,求 \(1\) 结点到 \(n\) 结点的最短路. 考虑\(\text{DP}\). 把所 ...

  8. NPOI _导出exl(简单应用)

    1. 导出exl表格,创建表格导出到客户端 public static MemoryStream Export_Table<T>(List<T> datalist) { Mem ...

  9. AD转化器分类及特点和选用

    1. AD转换器的分类 下面简要介绍常用的几种类型的基本原理及特点:积分型.逐次逼近型.并行比较型/串并行型.∑-Δ调制型.电容阵列逐次比较型及压频变换型. 1)积分型(如TLC7135)积分型AD工 ...

  10. (转)hashmap hashtable 的区别 Hash table 内部的数据结构

    转自:http://www.cnblogs.com/carbs/archive/2012/07/04/2576995.html Hashtable 和 HashMap 做为 Map 的基本特性 两者都 ...