我读着史铁生的散文,零碎的牵扯起我生命中不曾出现过的记忆,一如北方的黄山厚土之中悠忽而来的忧伤的信天游,那些灿若信仰一样的阳光以及阳光下虔诚的子民。我想有一次远行,于细碎流淌的时光与路途之中,观察所有遥不可及的生存方式,以及其中的人们。我发现我爱上了北方,中国的北方。满含苍凉的气息:那些皲裂而贫瘠的黄土地,干涸焦灼似静脉一般延伸的河床,那些皮肤黑皱似柏树老皮的农民...人与大地皆有着原始而朴素的容颜,映照着平凡的历史。—— 七堇年

ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287

ARM 汇编代码中几乎处处都在使用寄存器,寄存器是处理器特有的用来暂存指令、数据和地址的高速存储单元。比如,高级语言中的变量,到了汇编中,其值可能就保存在某个寄存器中。

上述代码中的 R0、R2、SP 都是 ARM 寄存器。

ARM 处理器共有 31 个通用寄存器和 6 个状态寄存器。不过,在某一处理器模式下都是使用其中的一部分,包括 15 个通用寄存器(R0 ~ R14),一个或两个状态寄存器(CPSR/SPSR)和程序计数器(PC/R15)。

R0 ~ R14 又可分为两类,即:不分组寄存器(R0 ~ R7)和分组寄存器(R8 ~ R14)。所谓不分组,即该寄存器在各处理器模式下共用同一物理寄存器;所谓分组,即该寄存器在不同的处理器模式下,对应着不同的物理寄存器。

这其中分组寄存器(R8 ~ R14)又可分为两类:(1)R8 ~ R12 有 2 组物理寄存器:1 组用于 FIQ 模式,另 1 组用于除 FIQ 以外的所有模式。(2)R13 ~ R14 有 6 组物理寄存器,1 组用于用户模式和系统模式,另 5 组分别用于 5 种异常模式。

另外,R13 通常用作堆栈指针,称为 SP;R14 用作链接寄存器,称为 LR。CPSR 是当前程序状态寄存器,SPSR 是程序状态保存寄存器。当出现异常时,SPSR 用于保存 CPSR 的状态。

最后,ARM 处理器采用 3 级流水线机制来加快指令处理速度。所以,PC 总是指向当前指令的下 2 条指令的地址,即当前指令地址值加上 8 个字节。

ARM 处理器支持 7 种运行模式:

  • 用户模式 (usr)
  • 快速中断模式 (fiq)
  • 外部中断模式 (irq)
  • 管理模式 (svc)
  • 数据访问终止模式 (abt)
  • 系统模式 (sys)
  • 未定义指令中止模式 (und)

除用户模式外,其他模式均为“特权”模式,处理器可以访问受保护的系统资源,而 ARM 程序逆向分析通常只涉及用户模式。在用户模式下,处理器可以访问 R0 ~ R14、PC (R15)、CPSR,没有 SPSR。

ARM 处理器有两种工作状态:(1)ARM 状态:执行 32 位对齐的 ARM 指令;(2)Thumb 状态:执行 16 位对其的 Thumb 指令。

两种状态下的寄存器命名有部分差异,下面只列出不同的部分:

  • Thumb 状态下的 FP 对应 ARM 状态下的 R11
  • Thumb 状态下的 IP 对应 ARM 状态下的 R12
  • Thumb 状态下的 SP 对应 ARM 状态下的 R13
  • Thumb 状态下的 LR 对应 ARM 状态下的 R14
  • Thumb 状态下的 PC 对应 ARM 状态下的 R15

Android 平台的 ARM 汇编为 GNU ARM 汇编,使用 GAS (GNU Assembler,GNU 汇编器)。

学习资料:【Android 软件安全与逆向分析】

入门 ARM 汇编(一)—— 知识铺垫的更多相关文章

  1. 入门 ARM 汇编(二)—— 寻址方式

    忧愁他整天拉着我的心,像一个琴师操练他的琴:悲哀像是海礁间的飞涛:看他那汹涌,听他那呼号!—— 徐志摩·四行诗一首 ilocker:关注 Android 安全(新手) QQ: 2597294287 立 ...

  2. GNU ARM汇编快速入门

    以前用ARM的IDE工具,使用的是ARM标准的汇编语言.现在要使用GNU的工具,当然要了解一点GNU ARM汇编的不同之处.其实非常的简单,浏览一下文档然后再看看程序就完全可以搞定了,或者你硬着头皮看 ...

  3. x64 番外篇——知识铺垫

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  4. ARM汇编程序基本知识

    ARM汇编程序基本知识 1.汇编程序的基本组成 ARM汇编语言程序中,程序是以程序段为单位组织代码的.段是相对独立的指令或者代码序列,拥有特定的名称.段的种类有代码段.数据段和通用段,代 码段的内容为 ...

  5. iOS 逆向之ARM汇编

    最近对iOS逆向工程很感兴趣. 目前iOS逆向的书籍有: <Hacking and Securing IOS Applications>, <iOS Hacker's Handboo ...

  6. GNU ARM 汇编指令

    第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针.设置页表.操作 ARM的协处理器等.初始化完成后就可以跳转到C ...

  7. arm汇编笔记

    ARM汇编(非虫笔记) 1.ARM汇编的目的: 分析elf文件的需要. 2.原生程序生成过程. (1)预处理,编译器处理c代码中的预处理指令. gcc -E hello.c -o hello.i (2 ...

  8. GNU ARM 汇编基础

    ARM GNU汇编基础 0 前言 全文补充提醒: 笔者在阅读ARM官方文档及查阅实际的u-boot源码中的汇编代码后,发现了一些不同于ARM官方文档中的汇编语法,查阅相关资料后,才发现主要由于汇编器的 ...

  9. 嵌入式ARM汇编详解

    文章目录 零.预备知识 1.ARM与X86 2.ARM中指令的执行 3.ARM的九种寻址方式 立即数寻址 寄存器寻址 寄存器间接寻址 寄存器偏移寻址 寄存器基址变址寻址 批量寄存器寻址 相对寻址 堆栈 ...

随机推荐

  1. vs 2010 中类文文件模板的修改

    类模板 文件的修改,以前也修改过,这次有个同事问我,搞了有一会才搞定,这里还是记录分享下. 如果想在每次创建文件时,自动生成文档注释(注意是自动生成文档注释而不是帮助文档),如下面的代码,需要设置VS ...

  2. 用C#开发的双色球走势图(一)

    首先声明,个人纯粹无聊之作,不作商业用途. 我相信每个人都拥有一个梦想那就是有朝一日能中500W,这个也一直是我的梦想,并默默每一期双色球或多或少要贡献自己一点点力量,本人并不属于那种铁杆的彩票迷,每 ...

  3. 操作AppConfig.xml中AppSettings对应值字符串

    //查询AppSettings的key         public static List sql()         {             List list = new List();   ...

  4. fibonacci数列从a到b的个数

    Description 我们定义斐波那契数列如下: f1=1 f2=2 f(n)=f(n-1)+f(n-2)(n>=3)   现在,给定两个数a和b,计算有多少个斐波那契数列中的数在a和b之间( ...

  5. 内存分段 && 缓冲区 && 析构函数

    一.内存中的程序: 在进程被载入内存中时,基本上被分成许多小的节,以下是6个主要的节. 低地址                                                   高地 ...

  6. weblogic 12c下jxls导出excel报错Could not initialize class org.apache.poi.xssf.usermodel.XSSFVMLDrawing

    周一,开发反馈weblogic 12c下jxls导出excel报错,公司环境和UAT环境均报错,看日志如下: 2016-06-08 09:16:55,825 ERROR org.jxls.util.T ...

  7. JQuery EasyUI Tree

    Tree 数据转换 所有节点都包含以下属性: id:节点id,这个很重要到加载远程服务器数据 which is important to load remote data text: 显示的节点文本 ...

  8. 存放事务码及其描述的TABLE是TSTC、TSTCT。

    存放事务码及其描述的TABLE是TSTC.TSTCT.

  9. Android破解之北斗手机定位系统

    我想破解GIS相关的安卓程序,于是找到了这个北斗手机定位系统,且不论它是否能定位,定位精度有多高,本文件只进行破解分析. 在模拟器中安装,输入手机号码,点击"卫星定位",它会一级一 ...

  10. Creating External Lists From Code

    You can create an external list based on an entity (external content type) defined in SharePoint Bus ...