1、跳转指令

  B        无条件跳转

  BL      带链接的无条件跳转

  BX      带状态切换的无条件跳转

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

  B  loc_地址

  BNE, BEQ

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

  存储器(主存,即内存)

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

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

  

  LDR:从存储器中加载数据到寄存器    LoaD Register   <-  

  LDR  R8, [R9,#04]  R8为待加载数据的寄存器,加载值为 R9+0x4 指向的存储单元

  

  STR:将寄存器的数据存储到存储器    STore Register   ->

  STR  R8,[R9,#04]   R8寄存器的数据存储到 R9+0x04 指向的存储单元

  

  LDM:将存储器的数据加载到一个寄存器列表  LoaD Multiple  ->

  LDM  R0, {R1-R3}  将 R0 指向的存储单元的数据依次加载到 R1,R2,R3 寄存器

  STM:将一个寄存器列表的数据存储到指定的存储器  STore Multiple  <-

  

  PUSH:将寄存器值推入堆栈

  POP  :将堆栈值推出到寄存器

  SWP:将寄存器与存储器之间的数据进行交换

  SWP  R1,R1 [R0]  将 R1 寄存器与 R0 指向的存储单元的内容进行交换

  

3、数据传送指令

  MOV:将立即数或寄存器的数据传送到目标寄存器  <-

  MOV  R0, #8   0x8数据传送给R0,相当于赋值

4、数据算术运算指令

  <-

  ADD, SUB, MUL, DIV

  有符号,无符号运算:带进位运算

5、数据逻辑运算指令

  与:AND

  或:ORR

  异或:EOR

  移位:实质是乘,除,类似于小数点移位,但相反。小数点左移,数变小;右移变大。逻辑移位,左移变大,右移变小,且按2的倍数进行,因为是2进制。

  LSL:逻辑左移 Logical Shift Left  <-

  LSR:逻辑右移 Logical Shift RIght ->

6、比较指令

  CMP:比较

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

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

7、其它指令

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

  伪指令:DCB

8、寄存器寻址方式

  立即寻址:MOV  R0,#1234

  寄存器寻址:MOV R0,R1

  寄存器移位寻址:MOV  R0,R1,LSL  #2

  寄存器间接寻址:LDR R0,[R1]  将R1寄存器中的值作为地址,取出地址中的值赋值给R0

  寄存器间接基址偏移寻址:LDR  R0,[R1, #-4]  将R1寄存器的值减 0x4 的值作为地址,取出地址中的值给R0

汇编:

  机器语言,高级语言的逆向

分析和修改汇编指令:

  赋值、跳转、算术运算、移位运算、堆栈运算、内存读写指令、函数调用约定。

用户模式:

  不分组寄存器(R0-R7)

  分组寄存器(R8-R14)

传递参数与返回值(Ro-R3)

保存栈顶地址(R13/SP)

保存函数的返回地址(R14/LR)

程序计数器R15(PC)

状态寄存器CPSR

ARM处理器:

  ARM状态(执行32位对齐指令的ARM指令)

  Thumb状态(执行16位对齐的Thumb指令)

补充:常用ARM指令集及汇编

Link:https://www.cnblogs.com/farwish/p/15226741.html

ARM 反汇编速成的更多相关文章

  1. 恶意代码分析实战-x86反汇编速成班

    x86反汇编速成 x86体系结构 3种硬件构成: 中央处理器:负责执行代码 内存(RAM):负责存储所有的数据和代码 输入/输出系统(I/O):为硬盘.键盘.显示器等设备提供接口 内存 一个程序的内存 ...

  2. 第4章 x86反汇编速成班

    4.1 抽象层次 硬件<微指令<机器码<低级语言<高级语言<解释型语言 4.2 逆向工程 4.3 x86体系结构 冯-诺依曼体系结构 中央处理器(CPU): 负责执行代码 ...

  3. 基于ARM处理器的反汇编器软件简单设计及实现

    写在前面 2012年写的毕业设计,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性 ...

  4. arm汇编(c内嵌汇编及c和汇编互调)

    C语言编译成汇编: arm-linux-gcc -S test.c -o test.S C语言编译成可执行文件: arm-linux-gcc test.c -o test 多个文件编译链接: arm- ...

  5. CTF各种资源:题目、工具、资料

    目录 题目汇总 Reverse 签到题 Web Web中等难度 Crypto 基础网站 各类工具 综合 Web Payloads 逆向 Pwn 取证 题目汇总 这里收集了我做过的CTF题目 Rever ...

  6. 通过反汇编理解函数调用机制(x86和ARM)

    如下,一个简单的程序 #include <stdio.h> int add(int a, int b) { return a + b; } void main() { , b = ; in ...

  7. ARM的BIN文件反汇编方法

    最近在调试uboot的代码时,用的新版本的uboot,lowlevel_init函数里是空的,而且在链接文件中也没有发现对lowlevel_init.o的链接.在bl lowlevel_init 之前 ...

  8. 痞子衡嵌入式:ARM Cortex-M文件那些事(7)- 反汇编文件(.s/.lst/.dump)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的反汇编文件(.s, .lst, .dump). 痞子衡在第四.五.六节课分别介绍了编译器/链接器生成的3种output文件( ...

  9. ARM汇编程序闪烁灯与其反汇编代码比较

    /* *LED闪烁 *led.s */ #define GPJ0CON 0xE0200240 #define GPJ0DAT 0xE0200244 .global _start //把 _start ...

  10. 查看32bit的ARM(比如ARMv7)反汇编

    1.使用./arm-eabi-as test.S -o test.o编译 2.使用./arm-eabi-objdump -d test.o反汇编

随机推荐

  1. 新浪Linux 运维工程师面试真题

    新浪Linux 运维工程师面试真题 首先我们来看下新浪 Linux 运维工程师招聘岗位要求: [岗位定义]运维工程师 [岗位薪资]10K-20K [基本要求]经验 1-3 年 / 本科及以上 / 全职 ...

  2. 3DCAT投屏功能升级,助力企业营销与培训

    3DCAT实时渲染云推出以来,深受广大客户的喜爱,3DCAT也一直根据客户的反馈优化我们的产品. 但是这段时间来,不同行业的客户都反馈着同一个问题. 汽车销售顾问:"什么时候支持投屏功能呢, ...

  3. R语言安装教程

    R 语言官方网站:The Comprehensive R Archive Network 官方镜像站列表:CRAN - Mirrors 一.官网下载R安装包 下载地址为:Index of /bin 进 ...

  4. HTML/ CSS 入门

    前言 我们在之前的学习中,对于网络有了一定的了解.现在我们来学习一些基础的 HTML/ CSS 知识.希望阅读完这篇文章能达到编写简单页面的程度. 目录: HTML/ CSS 的发明: HTML 基础 ...

  5. KingbaseESV8R6普通用户无权限执行vacuum

    背景 数据库日志有如下提示: WARNING: skipping "pivot_t1" --- only table or database owner can vacuum it ...

  6. IDEA MyBatis Log 插件,打印SQL语句

    打开Settings->plugins 搜索插件 MyBatis Log点击安装,完成后重启IDEA即可. 点击Tools,选择 MyBatis Log Plugin ,会在下方打开一个窗口,这 ...

  7. #李超线段树 or 斜率优化+CDQ分治#洛谷 4655 [CEOI2017]Building Bridges

    题目 分析 列出方程即为\(dp[i]=\min\{dp[j]+(h[i]-h[j])^2+s[i-1]-s[j]\}\) \(dp[j]+h[j]^2-s[j]=2*h[i]*h[j]+dp[i]- ...

  8. 基于vue3的Crontab组件

    网上找的没有满意的,决定从若依前后端分离其前端vue2中的crontab进行转换,先上效果 若依: 改后: v2转v3没什么难度,其中有大量的将 this.*** 替换为 ***.value,笔者写了 ...

  9. 【FAQ】HarmonyOS SDK 闭源开放能力 —Scan Kit

    1.问题描述 Scan Kit扫描专用底层码流接口需要鉴权,鉴权失败后功能还能用吗? 解决方案 如果已经申请过白名单,因为异常导致的鉴权失败会优先放通,保障业务成功. 2.问题描述 调用Scan Ki ...

  10. 【FAQ】推送服务常见问题及解答

    目录 1.报错6003解决方案. 2.推送成功收不到消息. 3.Gettoken返回0,无法进入onToken函数,无法收到广播. 4.如何在华为开放平台查看消息属性,推送的时候带了importanc ...