【基于Android的ARM汇编语言系列】之五:ARM指令集与Thumb指令集
作者:郭嘉
邮箱: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指令集
写在前面:本篇文章旨在大致介绍下ARM指令集的相关内容,这里也同一时候提供一个有详解和用例的待书签的PDF版本号,方便大家查阅。
指令集是处理器的核心。ARM指令的基本格式例如以下所看到的:
opcode {cond}{S}{.W\.N}Rd, Rn{.operand2}
- S:指定是否影响CPSR寄存器的值,如ADDS。SUBS等。
- .W.N:指令宽度说明符。
- Rd:目的寄存器。
- Rn:第一个操作数寄存器。
- operand2:第二个操作数,第二个操作数能够是马上数、寄存器或寄存器位操作。
- cond:运行条件。它的取值例如以下图所看到的:
一 跳转指令
1.1 B
跳转指令。
1.2 BL
带链接的跳转指令。
1.3 BX
带状态切换的跳转指令。
二 存储器訪问指令
2.1 LDR
从存储器中载入数据到寄存器。
2.2 STR
存储数据到指定的存储单元。
2.3 LDM
从指定的存储单元载入多个数据到一个寄存器列表。
2.4 STM
将一个寄存器列表的数据的数据存储到指定的存储单元。
2.5 PUSH
将寄存器推入满递减堆栈。
2.6 POP
从递减堆栈中弹出数据到寄存器。
2.7 SWP
用于寄存器和存储器之间的数据交换。
三 数据处理指令
3.1 MOV
将8位马上数或寄存器里的内容送到目标寄存器中。
3.2 MVN
将8位马上数或寄存器里的内容按位取反后送到目标寄存器中。
3.3 ADD
加法指令。
3.4 ADC
带进位的加法指令。
3.5 SUB
减法指令。
3.6 RSB
逆向减法指令。
3.7 SBC
带进位的减法指令。
3.8 RSC
带进位的逆向减法指令。
3.9 MUL
乘法指令。
3.10 MLS
3.11 MLA
3.12 UMULL
3.13 UMLAL
3.14 SMULL
3.15 SMLAL
3.16 SMLAD
3.17 SMLSD
3.18 SDIV
有符号数除法指令。
3.19 UDIV
无符号数除法指令。
3.20 ASR
算术右移指令。
3.21 AND
逻辑与指令。
3.22 ORR
逻辑或指令。
3.23 EOR
异或指令。
3.24 BIC
位清除指令。
3.25 LSL
逻辑左移指令。
3.26 LSR
逻辑右移指令。
3.27 ROR
循环右移指令。
3.28 RRX
带扩展的循环右移指令。
3.29 CMP
3.30 CMN
3.31 TST
位測试指令。
3.32 TEQ
四 其它指令
4.1 SWI
软中断指令。
4.2 NOP
空操作指令。
4.3 MRS
读状态寄存器指令。
4.4 MSR
写状态寄存器指令。
【基于Android的ARM汇编语言系列】之五:ARM指令集与Thumb指令集的更多相关文章
- 【基于Android的ARM汇编语言系列】之三:ARM汇编语言程序结构
作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...
- ARM指令集、Thumb指令集、Thumb-2指令集
MCU使用什么指令集主要由内核决定的,比如Cortex-M3使用的是Thumb-2指令集 ARM指令集: 编代码全部是 32bits 的,每条指令能承载更多的信息,因此使用最少的指令完成功能, 所以在 ...
- 13 ARM指令集与Thumb指令集
指令格式 ARM基本格式 <opcode>{<cond>}{S}{.W|.N}<Rd>,<Rn>{,<operand2>} opecode: ...
- Android ARM汇编语言
简介 ARM是Advanced RISC Machine的首字母缩写,它可以称之为一家嵌入式处理器的提供商,也可以理解为一种处理器的架构,还可以将它作为一套完整的处理器指令集. 原生程序与ARM汇编语 ...
- ARM版本系列及家族成员梳理
ARM公司简介 ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能.廉价.耗能低的RISC (精简指令集)处理器. 1985年第一个AR ...
- ARM的体系结构与编程系列博客——ARM处理器系列介绍
ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...
- ARM v8-A 系列CPU的MMU隐射分析
ARM v8-A 系列CPU的MMU隐射分析 摘要:V8-A系列CPU有ELX,X为0~3等4个异常级别,又有AArch64和AArch32两种执行状态,异常级别可以决定执行状态,而对应着执行状态,M ...
- 一点理解之 CmBacktrace: ARM Cortex-M 系列 MCU 错误追踪库
@2019-02-14 [小记] CmBacktrace: ARM Cortex-M 系列 MCU 错误追踪库,用来将单片机故障状态寄存器值翻译出来输出至终端上以便排错 CmBacktrace: AR ...
- ARM汇编语言
---恢复内容开始--- arm汇编语言 汇编语言是一种程序设计语言,arm处理器是一种16/32位的嵌入式RISC微处理器.一开始我把这混为一谈了.ARM汇编的特点:汇编语言,又叫助记符语言. 1) ...
随机推荐
- gulp安装成功但是无法使用
gulp安装正常,但是查看gulp -v和使用gulp的时候报错, 原因:缺少环境变量或环境变量错误. 查找环境变量的方法:在dos下输入npm config get prefix就会显示一个地址,这 ...
- POJ 2230 DFS
题意: Bessie 最近做了农场看守,他每天晚上的工作就是巡视农场并且保证没有坏人破坏农场.从谷仓出发去巡视,并且最终回到谷仓. Bessie 视力不是很好,不能像其他农场的看守一样,对农场的每一条 ...
- php中curl的详细解说 【转载】
这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_contents()函数来采集页面内容的,貌似都没有curl的概念亦或是对这种工具特别不敏感, 本文我来给大家详细介绍下cUR ...
- 35个jquery小技巧
1. 禁止右键点击 ? 1 2 3 4 5 $(document).ready(function(){ $(document).bind("contextmenu",fun ...
- windbg将调试信息保存到文本文件
在跟踪一些出现频率较低的问题时,有时候需要长时间调试,但是在在输出信息太多时可能前面的日志会被清空,为避免这种情况,可以将输出日志记录到文本文件以备查看. 1. 可以在启动时直接用带 -logo的命令 ...
- 5.7 Maven通俗讲解
好的东西只适合ctry+c+v 原文地址:https://blog.csdn.net/shuzhe66/article/details/45009175 Maven通俗讲解 也许是本人不才,初识Mav ...
- Vs2010删除空白行
在copy了别人的代码之后,出现了大量的空白行,批量删除空白行方法为: 查找内容:^:b*$\n 替换为: 查找范围:当前文档 使用:正则表达式
- (转)PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示
http://blog.csdn.net/gisshixisheng/article/details/41575833 标题比较长,主要呢是实现以下几点: 1.将shp数据导入到PostGIS中: 2 ...
- java 基础回顾1
整理----加自己理解------网上参考----- java封装理念 一 概念: 隐藏对象的属性和实现细节,仅供对外提供公共访问方式. 二 好处 1) 将变量隔离 2) 便于使用 3) 提高重 ...
- mysql 是如何保证在高并发的情况下autoincrement关键字修饰的列不会出现重复
转载自 https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c42cf94e51d45524861122d#heading-8 mysql ...