【基于Android的ARM汇编语言系列】之一:ARM汇编语言开篇
2015-07-06 13:24
549 查看
作者:郭嘉
邮箱:allenwells@163.com
博客:http://blog.csdn.net/allenwells
github:https://github.com/AllenWell
【基于Android的ARM汇编语言系列】之二:C/C++程序生成ARM汇编程序的过程分析
【基于Android的ARM汇编语言系列】之三:ARM汇编语言程序结构
【基于Android的ARM汇编语言系列】之四:ARM处理器的寻址方式
【基于Android的ARM汇编语言系列】之五:ARM指令集与Thumb指令集
【基于Android的ARM汇编语言系列】之六:NEON指令集与VFP指令集
这是【基于Android的ARM汇编语言系列】博文的开篇文章,这里会先介绍一下ARM处理器的大致分类和作用。
Classic
Embedded
Application
Classic被称为经典系列。
ARM1~ARM11一直都以数字来命名,ARM12以后改为用Cortex命名。Cortex有以下几个分类:
Cortex-A:广泛用于智能手机、上网本、电子书以及数字电视等。
Cortex-M:用于微控制领域,该系列的特点是高能效和低功耗。
Cortex-R:用于支持深层嵌入式的饿实时应用,该系列的特点是低功耗、良好的中断行为、卓越性能以及与现有平台的高兼容性。
尽管ARM处理器版本众多,它是很多型号ARM处理器兼容一套ARM指令集,ARM架构与ARM处理器的对应关系如下图所示:
上图涉及的技术,这里也简单提一下:
VFP:为ARM处理器提供了浮点运算功能。
Jazelle:允许某些架构的硬件上加速运行Java字节码。
SIMD:多媒体指令集。
TrustZone:安全性控制,避免产品受到外部的恶意攻击。
NEON:NEON是SIMD体系结构的扩展,NEON在执行上比传统的SIMD占用更少的指令周期。
Android最初选择ARM作为平台设备的处理器结构,并做了专门的优化。发展到Android4.1版本以后,已经全面支持ARM、x86和MIPS三种架构的处理器。
用户模式(usr):ARM处理器正常的程序运行状态。
快速中断模式(flq):用于高速数据传输或通道处理。
外部中断模式(irq):用于通用的中断处理。
管理模式(svc):操作系统使用的保护模式。
数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储以及存储保护。
系统模式(sys):运行具有特短的操作系统任务。
未定义指令终止模式(und):当未定义的指令执行时进入该模式。
Thumb状态:执行16位字对齐的ARM指令。
Thumb状态下的寄存器的命名与ARM有部分差异,它们的对应关系如下所示:
Thumb状态下的R0~R7与ARM状态下的R0~R7相同。
Thumb状态下的CPSR与ARM状态下的CPSR相同。
Thumb状态下的FP与ARM状态下的R11相同。
Thumb状态下的IP与ARM状态下的R12相同。
Thumb状态下的SP与ARM状态下的R13相同。
Thumb状态下的LR与ARM状态下的R14相同。
Thumb状态下的PC与ARM状态下的R15相同。
邮箱:allenwells@163.com
博客:http://blog.csdn.net/allenwells
github:https://github.com/AllenWell
【基于Android的ARM汇编语言系列】章节列表
【基于Android的ARM汇编语言系列】之一:ARM汇编语言开篇【基于Android的ARM汇编语言系列】之二:C/C++程序生成ARM汇编程序的过程分析
【基于Android的ARM汇编语言系列】之三:ARM汇编语言程序结构
【基于Android的ARM汇编语言系列】之四:ARM处理器的寻址方式
【基于Android的ARM汇编语言系列】之五:ARM指令集与Thumb指令集
【基于Android的ARM汇编语言系列】之六:NEON指令集与VFP指令集
这是【基于Android的ARM汇编语言系列】博文的开篇文章,这里会先介绍一下ARM处理器的大致分类和作用。
一 ARM处理器与ARM指令集
整个ARM处理器被分为三个部分:Classic
Embedded
Application
Classic被称为经典系列。
ARM1~ARM11一直都以数字来命名,ARM12以后改为用Cortex命名。Cortex有以下几个分类:
Cortex-A:广泛用于智能手机、上网本、电子书以及数字电视等。
Cortex-M:用于微控制领域,该系列的特点是高能效和低功耗。
Cortex-R:用于支持深层嵌入式的饿实时应用,该系列的特点是低功耗、良好的中断行为、卓越性能以及与现有平台的高兼容性。
尽管ARM处理器版本众多,它是很多型号ARM处理器兼容一套ARM指令集,ARM架构与ARM处理器的对应关系如下图所示:
上图涉及的技术,这里也简单提一下:
VFP:为ARM处理器提供了浮点运算功能。
Jazelle:允许某些架构的硬件上加速运行Java字节码。
SIMD:多媒体指令集。
TrustZone:安全性控制,避免产品受到外部的恶意攻击。
NEON:NEON是SIMD体系结构的扩展,NEON在执行上比传统的SIMD占用更少的指令周期。
Android最初选择ARM作为平台设备的处理器结构,并做了专门的优化。发展到Android4.1版本以后,已经全面支持ARM、x86和MIPS三种架构的处理器。
二 ARM处理器的工作模式和工作状态
2.1 ARM处理器的工作模式
ARM处理器共37个32位处理器,其中有31个通用寄存器和6个状态寄存器。ARM处理器支持7种运行模式,分别是:用户模式(usr):ARM处理器正常的程序运行状态。
快速中断模式(flq):用于高速数据传输或通道处理。
外部中断模式(irq):用于通用的中断处理。
管理模式(svc):操作系统使用的保护模式。
数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储以及存储保护。
系统模式(sys):运行具有特短的操作系统任务。
未定义指令终止模式(und):当未定义的指令执行时进入该模式。
2.2 ARM处理器的工作状态
ARM状态:执行32位字对齐的ARM指令。Thumb状态:执行16位字对齐的ARM指令。
Thumb状态下的寄存器的命名与ARM有部分差异,它们的对应关系如下所示:
Thumb状态下的R0~R7与ARM状态下的R0~R7相同。
Thumb状态下的CPSR与ARM状态下的CPSR相同。
Thumb状态下的FP与ARM状态下的R11相同。
Thumb状态下的IP与ARM状态下的R12相同。
Thumb状态下的SP与ARM状态下的R13相同。
Thumb状态下的LR与ARM状态下的R14相同。
Thumb状态下的PC与ARM状态下的R15相同。
相关文章推荐
- html中的table在android端显示
- 给EditText的drawableRight属性的图片设置点击事件 分类: 学习笔记 android 2015-07-06 13:20 134人阅读 评论(0) 收藏
- android studio 错误集合
- android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)
- Android学习 23 ->浅谈现阶段所学的对话框控件
- Android入门(12)——使用DataPicker以及TimePicker显示当前日期和时间
- Android 屏幕适配
- proguard android迷茫
- 如何正确地在android项目中添加第三方jar包
- 使用Kotlin开发Android应用(II):创建新工程
- 使用Kotlin开发Android应用(I):简介
- Android虚拟机安装软件
- 自行把Android SDK导入到Maven
- Android 在启动多个Acticity的情况下,退出整个APK的几种方式
- Android slidingmenu详细解释 滑动的优化
- android ListView,GridView 设置某一项显示位置
- 史上最详细的Android Studio系列教程五--Gradle命令详解与导入第三方包
- android java.net.UnknownHostException: Unable to resolve host "...": No address associated 错误
- [Android自定义控件] Android自定义控件
- Android中GridView的应用