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

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. Lucene-Analyzer

    Lucene文本解析器实现 把一段文本信息拆分成多个分词,我们都知道搜索引擎是通过分词检索的,文本解析器的好坏直接决定了搜索的精度和搜索的速度. 1.简单的Demo private static fi ...

  2. 组合数学 - 母函数的运用 --- hdu 1709 :The Balance

    The Balance Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. C#开发中Windows域认证登录2016(扩展吉日嘎拉GPM系统V4.2)

    2013年搞公司的OA时,为了统一用户登录,将Windows AD的用户和OA的账号对接,OA用户名的规则就是使用Windows AD的用户名,格式举例:Troy.Cui,原理就是先进行域服务器的认证 ...

  4. Windows 64位操作系统和32位操作系统在注册表上的有一点不一样

    Windows 64位操作系统为提供对32位应用程序的兼容,在“C:\Windows\SysWOW64”目录下保留了很多32位的工具(如CMD.exe是32位的).在Windows 64位操作系统上跑 ...

  5. Win764位配置Github环境及将代码部署到Github pages-志银强势总结

    (软件及教程下载分享:链接:http://pan.baidu.com/s/1dFysay9 密码:pug0) 1-安装Git-2.9.2-64-bit.exe(解压安装文件,运行安装程序,除了记得修改 ...

  6. Dom4j 锁竞争性能低下解决

    在最近的项目中使用 Dom4j 解析 xml 发现性能低下,有锁竞争的情况,解决如下: SAXParserFactory factory = new org.apache.xerces.jaxp.SA ...

  7. js中的浅拷贝和深拷贝

    说说最近所学:浅拷贝和深拷贝也叫做浅克隆和深克隆,深浅主要针对的是对象的"深度",常见的对象都是"浅"的,也就是对象里的属性就是单个的属性,而"深&q ...

  8. 汉化入门之ExplorerControls

    第一次汉化,高手勿喷. 01.问题描述 在ArcGIS中有个添加数据窗口,如果在应用程序中直接调用它,则风格一致性则存在问题,很多时间我们都自定义添加数据窗口,我曾经也尝试过.详见ExplorerCo ...

  9. 简析android消息模型

    android总结系列 一.消息系统构成要素和基本原理 l  消息队列 l  发送消息 l  消息读取 l  消息分发 l  消息循环线程 消息系统必须要依赖一个消息循环线程来轮询自己的消息队列,如果 ...

  10. Android系统提供的开发常用的包名及作用

    android.app :提供高层的程序模型.提供基本的运行环境 android.content :包含各种的对设备上的数据进行访问和发布的类 android.database :通过内容提供者浏览和 ...