ARM学习笔记3——数据处理指令
一、数据处理指令概述
1、概念
数据处理指令是指对存放在寄存器中的数据进行处理的指令。主要包括算术指令、逻辑指令、比较与测试指令以及乘法指令 如果在数据处理指令前使用S前缀,指令的执行结果将会影响CPSR中的标志位。
2、语法格式
数据处理指令的基本语法格式 <opcode>{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
3、参数说明
<S>:标志指令的条件域是否更新CPSR
<Rn>:指示第一源操作数寄存器
<Rd>:指示目的寄存器
<shifter_operand>:指示第二源操作数
4、操作码<opcode>
5、<shifter_operand>的寻址方式
二、数据传送指令
1、MOV指令
1.1、作用
把一个数N送到目标寄存器Rd,其中N可以是寄存器,也可以是立即数
1.2、语法格式(注:{}符号中的参数表示可选,<>符号加字母表示一个参数)
MOV{<condition>}{S} <Rd>,<shifter_operand>
1.3、参数说明(注:符号相同的参数在后面也有相同的含义)
1.3.1、<cond>为指令编码中的条件域,它指示MOV指令在什么条件下执行
1.3.2、S是用来更新CPSR中条件标志位的值,当更新状态寄存器CPSR中的条件标志位时,有两种情况:
A、如果指令中的目标寄存器<Rd>不是R15,指令根据传送的数值设置CPSR中的N位(负数位)和Z位(零位)(如果数据在传送钱需要移位,则需要根据移位后的数值设置),并根据移位器的进位值设置CPSR的C位。标志位V和其他位不受影响。
B、如果指令中的目标寄存器<Rd>为R15,则当前处理器模式对应的SPSR的值复制到CPSR寄存器中,对于用户模式和系统模式,由于没有相应的SPSR,指令执行的结果不可预知。
1.3.3、<Rd>确定目标寄存器
1.3.4、<shifter_operand>确定操作数,为目标寄存器传送数据
2、MVN指令
2.1、作用
MVN是反相传送指令,它将操作数的反码传送到目的寄存器,并根据操作的结果更新CPSR中相应的条件标志位。
2.2、语法格式
MVN{<condition>}{S} <Rd>,<shifter_operand>
2.3、参数说明同MOV
三、算术运算指令
1、ADD加操作指令
1.1、作用
将寄存器<shifter_operand>的值加上<Rn>表示的数值,并将结果保存到目标寄存器<Rd>中,并根据指令的执行结果设置CPSR中相应的标志位。
1.2、语法格式
ADD{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
1.3、参数说明
<Rd>指定目标寄存器
<Rn>指定第一个源操作数寄存器
2、ADC带进位的加法指令
2.1、作用
将两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样做既可以做比32位大的加法。
2.2、语法格式
ADC{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
3、SUB减操作指令
3.1、作用
从寄存器<Rn>中减去<shifter_operand>表示的数值,并将结果保存到目标寄存器<Rd>中。
3.2、语法格式
SUB{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
4、SBC带进位的减法指令
4.1、作用
用于执行操作数大于32位的减法操作,该指令从寄存器<Rn>中减去<shifter_operand>表示的数值,再减去寄存器CPSR中C条件标志位的反码。并将结果保存到目标寄存器<Rd>中,并根据指令的执行结果设置CPSR中相应的标志位。
4.2、语法格式
SBC{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
5、RSB减翻转指令
5.1、作用
从寄存器<shifter_operand>中减去<Rn>表示的数值,并将结果保存到目标寄存器<Rd>中,并根据指令的执行结果设置CPSR中相应的标志位。
5.2、语法格式
RSB{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
6、RSC带进位的翻转减指令
6.1、作用
从寄存器<shifter_operand>中减去<Rn>表示的数值,再减去寄存器CPSR中C条件标志位的反码,并将结果保存到目标寄存器<Rd>中,并根据指令的执行结果设置CPSR中相应的标志位。
6.2、语法格式
RSC{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
四、逻辑运算指令
1、AND逻辑与指令
1.1、作用
将<shifter_operand>表示的数值与寄存器<Rn>的值按位做逻辑与操作,并将结果保存到目标寄存器<Rd>中,同时根据操作的结果更新CPSR寄存器
1.2、语法格式
AND{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
1.3、逻辑与值表
2、EOR逻辑异或指令
2.1、作用
将寄存器<Rn>中的值和<shifter_operand>的值执行按位“异或”操作,并将执行结果存储到目的寄存器<Rd>中,同时根据指令的执行结果更新CPSR中相应的条件标志位。
2.2、语法格式
EOR{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
2.3、异或值表
3、ORR逻辑或指令
3.1、作用
将第二个源操作数<shifter_operand>的值与寄存器Rn的值按位做逻辑或操作,结果保存在Rd中
3.2、语法格式
ORR{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
4、BIC位清零指令
4.1、作用
将寄存器Rn的值与第二源操作数<shifter_operand>的值的反码按位做“逻辑与”操作,结果保存到Rd中
4.2、语法格式
BIC{<condition>}{S} <Rd>,<Rn>,<shifter_operand>
4.3、BIC指令真值表
五、比较测试指令
1、CMP比较指令
1.1、作用
使用寄存器Rn的值减去shifter_operand的值,根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行
1.2、语法格式
CMP{<condition>}{S} <Rn>,<shifter_operand>
2、CMN负数比较指令
2.1、作用
比较指令使用寄存器Rn的值加上shifter_operand,根据操作的结果更新CPSR中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行
2.2、语法格式
CMN{<condition>}{S} <Rn>,<shifter_operand>
3、TST测试指令
3.1、作用
将一个寄存器Rn的值和一个shifter_operand表示的数值按位做逻辑与操作。条件标志位根据两个操作数做“逻辑与”后的结果设置。
3.2、语法格式
TST{<condition>}{S} <Rn>,<shifter_operand>
4、TEQ测试相等指令
4.1、作用
将一个寄存器的值和一个算术值按位做逻辑异或操作,条件标志位根据两个操作数做“逻辑异或”后的结果设置,以便后面的指令根据相应的条件标志来判断是否执行。
4.2、语法格式
TEQ{<condition>}{S} <Rn>,<shifter_operand>
ARM学习笔记3——数据处理指令的更多相关文章
- ARM学习笔记7——乘法指令
ARM乘法指令完成两个数据的乘法,两个32位二进制数相乘的结果是64位的4积. 其中: 1.“RadHi:RdLo”是由RdHi(最高有效32位)和RdLo(最低有效32位)链接形成的64位数,“[3 ...
- angular学习笔记(三十)-指令(10)-require和controller
本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...
- angular学习笔记(三十)-指令(7)-compile和link(2)
继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...
- angular学习笔记(三十)-指令(7)-compile和link(1)
这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...
- angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令
在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...
- angular学习笔记(三十)-指令(5)-link
这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数 ...
- angular学习笔记(三十)-指令(2)-restrice,replace,template
本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...
- JVM学习笔记——字节码指令
JVM学习笔记——字节码指令 字节码 0与 1是计算机仅能识别的信号,经过0和1的不同组合产生了数字之上的操作.另外,通过不同的组合亦产生了各种字符.同样,可以通过不同的组合产生不同的机器指令.在不同 ...
- arm学习笔记
学习ARM也有一定时间了,想想还是记点东西,要不以后就忘了.这是我的第一片,简简单单.但比较基础.1. ARM中一些常见英文缩写解释MSB:最高有效位:LSB:最低有效位:AHB:先进的高性能总线:V ...
随机推荐
- 手把手教你写电商爬虫-第四课 淘宝网商品爬虫自动JS渲染
版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...
- redis基本数据类型【2】-Hash类型
一.概述 1.散列是一种典型的字典结构,filed和value的映射,但value只能存储字符串,不支持其他类型 2.一个散列类型最多包含 2^32 -1个字段 3.散列适合存储对象:使用对象和ID构 ...
- UVA 12097 LA 3635 Pie(二分法)
Pie My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a numbe ...
- 《APUE》第三章笔记(3)
文件共享 UNIX系统支持在不同进程中共享打开的文件,首先先用一幅apue的图来介绍一下内核用于I/O文件的数据结构: 如图所见,一个进程都会有一个记录项,记录项中包含有一张打开文件描述符表,每个描述 ...
- mui h5 动态实现数据的移除和数据操作完后的重新获取
HTML 代码 <ul class="mui-table-view" id="OA_task_1"> <li class="mui- ...
- python实现雅虎拍卖后台自动回复卖家消息
前些时间,公司让做一个自动回复卖家信息的程序,现在总结下(用python实现的) 1.登陆雅虎拍卖后台手动获取cookie文件 #coding=utf-8 import sqlite3 import ...
- uploadify实现七牛云存储 显示上传进度+页面显示
准备: uploadify下载地址: http://www.uploadify.com/download/ 七牛 php-sdk开发指南: http://developer.qiniu.com/doc ...
- 2016031601 - 刻录ubuntu的U盘启动盘
使用UltraISO来刻录ubuntu15.1的系统安装盘. 需要U盘1个,ubuntu15.1系统镜像文件. 具体步骤如下: a.安装UltraISO软件,具体软件安装. b.安装完成后进行系统刻录 ...
- copy,retain,assign,strong,weak的区别
引用地址:http://www.aichengxu.com/view/32930 一.assign,copy,retain 1.copy是内容复制,新建一个相同内容的不同指针,retain为指针复制, ...
- iOS - 沙盒机制
iOS应用程序只能在为该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒.所有的非代码文件都要保存在此,例如图像,图标,声音,属性列表(plist文件),文本文件等.沙盒机制作为一 ...