ARM指令集中经常使用的存储和载入指令
ARM微处理器支持载入/存储指令用于在寄存器和存储器之间传送数据,载入指令用于将存储器中的数据传送到寄存器,存储指令则完毕相反的操作。经常使用的载入存储指令例如以下:
— LDR 字数据载入指令
— LDRB 字节数据载入指令
— LDRH 半字数据载入指令
— STR 字数据存储指令
— STRB 字节数据存储指令
— STRH 半字数据存储指令
1、LDR指令
LDR指令的格式为:
LDR{条件} 目的寄存器,<存储器地址>
LDR
指令用于从存储器中将一个
32
位的字数据传送到目的寄存器中。该指令通经常使用于从存储器中读取
32
位的字数据到通用寄存器,然后对数据进行处理。当程序计数器
PC
作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而能够实现程序流程的跳转。该指令在程序设计中比較经常使用,且寻址方式灵活多样,请读者认真掌握。
指令演示样例:
LDR R0,[R1] ;将存储器地址为R1的字数据读入寄存器R0。
LDR R0,[R1,R2] ;将存储器地址为R1+R2的字数据读入寄存器R0。
LDR R0,[R1,#8] ;将存储器地址为R1+8的字数据读入寄存器R0。
LDR R0,[R1,R2] ! ;将存储器地址为R1+R2的字数据读入寄存器R0,并将新地址R1+R2写入R1。
LDR R0,[R1,#8] ! ;将存储器地址为R1+8的字数据读入寄存器R0,并将新地址R1+8写入R1。
LDR R0,[R1],R2 ;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2写入R1。
LDR R0,[R1,R2,LSL#2]! ;将存储器地址为R1+R2×4的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。
LDR R0,[R1],R2,LSL#2 ;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。
2、LDRB指令
LDRB指令的格式为:
LDR{条件}B 目的寄存器,<存储器地址>
LDRB
指令用于从存储器中将一个
8
位的字节数据传送到目的寄存器中,同一时候将寄存器的高
24
位清零。该指令通经常使用于从存储器中读取
8
位的字节数据到通用寄存器,然后对数据进行处理。当程序计数器
PC
作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而能够实现程序流程的跳转。
指令演示样例:
LDRB R0,[R1] ;将存储器地址为R1的字节数据读入寄存器R0,并将R0的高24位清零。
LDRB R0,[R1,#8] ;将存储器地址为R1+8的字节数据读入寄存器R0,并将R0的高24位清零。
3、LDRH指令
LDRH指令的格式为:
LDR{条件}H 目的寄存器,<存储器地址>
LDRH
指令用于从存储器中将一个
16
位的半字数据传送到目的寄存器中,同一时候将寄存器的高
16
位清零。该指令通经常使用于从存储器中读取
16
位的半字数据到通用寄存器,然后对数据进行处理。当程序计数器
PC
作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而能够实现程序流程的跳转。
指令演示样例:
LDRH R0,[R1] ;将存储器地址为R1的半字数据读入寄存器R0,并将R0的高16位清零。
LDRH R0,[R1,#8] ;将存储器地址为R1+8的半字数据读入寄存器R0,并将R0的高16位清零。
LDRH R0,[R1,R2] ;将存储器地址为R1+R2的半字数据读入寄存器R0,并将R0的高16位清零。
4、STR指令
STR指令的格式为:
STR{条件} 源寄存器,<存储器地址>
STR
指令用于从源寄存器中将一个
32
位的字数据传送到存储器中。该指令在程序设计中比較经常使用,且寻址方式灵活多样,使用方式可參考指令
LDR
。
指令演示样例:
STR R0,[R1],#8 ;将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。
STR R0,[R1,#8] ;将R0中的字数据写入以R1+8为地址的存储器中。
5、STRB指令
STRB指令的格式为:
STR{条件}B 源寄存器,<存储器地址>
STRB
指令用于从源寄存器中将一个
8
位的字节数据传送到存储器中。该字节数据为源寄存器中的低
8
位。
指令演示样例:
STRB R0,[R1] ;将寄存器R0中的字节数据写入以R1为地址的存储器中。
STRB R0,[R1,#8] ;将寄存器R0中的字节数据写入以R1+8为地址的存储器中。
6、STRH指令
STRH指令的格式为:
STR{条件}H 源寄存器,<存储器地址>
STRH
指令用于从源寄存器中将一个
16
位的半字数据传送到存储器中。该半字数据为源寄存器中的低
16
位。
指令演示样例:
STRH R0,[R1] ;将寄存器R0中的半字数据写入以R1为地址的存储器中。
STRH R0,[R1,#8] ;将寄存器R0中的半字数据写入以R1+8为地址的存储器中。
ARM指令集中经常使用的存储和载入指令的更多相关文章
- 自己动手写CPU之第五阶段(3)——MIPS指令集中的逻辑、移位与空指令
将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第17篇.我尽量每周四篇 5.4 逻辑.移位操作与空指令说明 MIPS32指令集架构中定义的逻辑操作指令有8条:and.and ...
- 斗篷指令、属性指令、表单指令、条件指令、循环指令、js的Array操作、前台数据库、
```python"""1)指令 属性指令:v-bind 表达指令:v-model 条件指令:v-show v-if 循环指令:v-for 斗篷指令:v-cloak 2) ...
- ps:选区的存储及载入
有时候需要把已经创建好的选区存储起来,方便以后再次使用.就要使用选区存储功能. 创建选区后,直接点击右键(限于选取工具)出现的菜单中就“存储选区”项目.也可以使用菜单[选择 存储选区].会出现一个名称 ...
- 【小白学PyTorch】19 TF2模型的存储与载入
[新闻]:机器学习炼丹术的粉丝的人工智能交流群已经建立,目前有目标检测.医学图像.时间序列等多个目标为技术学习的分群和水群唠嗑的总群,欢迎大家加炼丹兄为好友,加入炼丹协会.微信:cyx64501661 ...
- ARM学习笔记4——加载存储指令
一.字数据传送指令 作用:用于把单一的数据传入或者传出一个寄存器. 1.LDR指令 1.1.作用 根据<addr_mode>所确定的地址模式从内存中将一个32位的字段读取到目标寄存器< ...
- ARM学习笔记8——通用寄存器和存储器内容交换指令和软中断指令
交换指令将一个存储单元内容与制定的寄存器内容相交换,交换指令为进程间同步提供了一种方便的解决途径.该指令产生一堆原子Load/Store操作,该操作发生在一个连续的总线操作中,在操作期间阻止其他任何指 ...
- Memcache存储机制与指令汇总
1.memcache基本简介 memcached是高性能的分布式内存缓存服务器.一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性. Memcach ...
- ngx_lua_API 指令详解(四)ngx.exec指令
https://github.com/openresty/lua-nginx-module#ngxexec 参照:http://blog.csdn.net/weiyuefei/article/deta ...
- [转载]Dalvik指令集
这篇文章是转载的,为了便于查找一些指令,贴在这里. 转自:http://blog.csdn.net/canfengxiliu/article/details/20144119 ------------ ...
随机推荐
- mac提升yosemite后php 扩展修复
mac升级之后 php 正积极提升自己,导致php环境破坏 所以 例如有以下几点需要修复 1. sudo ln -s /Applications/Xcode.app/Contents/Develope ...
- 如何从Terminal Command Line编译并运行Scope
Ubuntu SDK我们大部分的开发者是非常有效的.它甚至可以帮助我们进行在线调试.在这篇文章中,我们介绍了如何使用command line编译和执行我们scope. 1)创建一个主Scope 我们能 ...
- 第十七章——配置SQLServer(3)——配置“对即时负载的优化”
原文:第十七章--配置SQLServer(3)--配置"对即时负载的优化" 前言: 在第一次执行查询或者存储过程时,会创建执行计划并存储在SQLServer的过程缓存内存中.在很多 ...
- <八>阅读<<大话设计模式>>该模型的外观
Facade模式其实很好理解,被表面的东西展示海报.内部的东西,你不知道(因为我们有一个好包).例如,外部和公司内部制度,5交互系统,此5互.那么第一种就是外部系统和5个系统都进行交互:另外一种就是做 ...
- 中介模式和学习日记Effective C++
中介模式(Mediator):利用中介对象来封装一组对象交互.中保使对象并不需要显式地相互引用,使得松耦合,的交互. (1).中介者模式非常easy在系统中应用,也非常easy在系统中误用.当系统出现 ...
- 使用Eclipse设定Android开发环境
使用Eclipse设定Android开发环境 花了大概几天的时间最终搭建好了开发Android的环境了! 我是使用Eclipse +ADT顺利地搭建Android开发环境的. 如今Google以及An ...
- Java开发中的23种设计模式具体解释
public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = fa ...
- 它们的定义UIAlertView
code4App有很多伟大的上方UI特效代码,,好牛逼啊,这效果,太炫了,哇,怎么自己写不出来.事实上,再炫的特效,都是依据苹果系统的框架而来,假设我们了解系统框架实现的原理,也就能写出属于自己自己定 ...
- android控件 下拉刷新pulltorefresh
外国人写的下拉刷新控件,我把他下载下来放在网盘,有时候訪问不了github 支持各种控件下拉刷新 ListView.ViewPager.WevView.ExpandableListView.GridV ...
- Lucene于Directory
MMapDirectory从继承FSDirectory,抵抗jre至今未能解决Mmap close不回收空间(直到full gc恢复之前,)的bug,lucene使用hack资料恢复(只要sun ja ...