跳转指令

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. 消息队列和Kafka

    ------20191211闪

  2. java注释英语自动机翻

    一.简介 每次面试都被怼spring源码你看过吗?你用spring开发源码你都不看的吗?这样怎么开发?那我就下点决心,趁着现在疫情在家宅,我要看spring源代码.但是发现注释都是英文,勉勉强强能看懂 ...

  3. CTF之图片隐写术解题思路

    参考大佬的博客:https://blog.csdn.net/a_small_rabbit/article/details/79644078 深有感触,觉得写得比较全,因此将此篇文章记录在此方便以后用得 ...

  4. 遇到的基础php函数、方法

    0x01 PHP file() 函数 file() 函数把整个文件读入一个数组中. 数组中的每个元素都是文件中相应的一行,包括换行符在内. 实例: <?php print_r(file(&quo ...

  5. Android_侧滑菜单的实现

    1.创建侧滑菜单Fragment package com.example.didida_corder; import android.os.Bundle; import android.view.La ...

  6. 如何通过给MM修电脑培养感情

    文章来自网络 在修之前,向MM反复声明,这电脑故障是有硬件和软件之分的,如果是硬件故障,例如显卡风扇不转了,显示器连线老化,显示器分辨率超出显示器指标,等等都会导致黑屏啊,这个我不回家用专门的工具是修 ...

  7. Mac配置环境变量时终端显示bash-3.2解决方案

    1.问题描述 (base) -bash-3.2$ vi ~/.bash_profile (base) -bash-3.2$ source ~/.bash_profile 2.解决方案 无授权转,侵权删 ...

  8. C#连接数据库时Appsettings 与connectionStrings的区别

    C#连接数据库时Appsettings 与connectionStrings的区别 转载lscyo 最后发布于2018-08-08 18:38:04 阅读数 3366  收藏 展开 一..Appset ...

  9. 控制台输出Scanner和BufferedReader区别

    Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键 时,Scanner就会返回下一个输入. 当你输入的内容中间包括空格时,显然,使用Scanner就不能完整 ...

  10. PP: Reconstructing time series into a complex network to assess the evolution dynamics of the correlations among energy prices

    Purpose detect the dynamics in time series of their correlation Methodology 1. calculate correlation ...