资料介绍
9.4 交换指令
交换指令是load/Store指令的一种特殊形式。该指令将一个存储器单元内容与指定的寄存器内容相交换。交换指令为进程间同步提供了一种方便的解决途径。该指令产生一对原子Load/Store操作(an atomic load and store operation),该操作发生在一个连续的总线操作中,在操作期间阻止其他任何指令对该存储单元的读/写。
表9.3总结了ARM的交换指令。
表9.3 交换指令
助 记 符含 义操 作
SWP寄存器和存储器字数据交换Rd←[Rd],[Rn]←[Rm](Rn≠Rd或Rm)
SWPB寄存器和存储器字节数据交换Rd←[Rd],[Rn]←[Rm](Rn≠Rd或Rm)
9.4.1 寄存器和存储器字数据交换指令SWP
1.指令编码格式
寄存器和存储器字交换指令SWP(Swap)用于将一个内存单元(该单元地址放在寄存器Rn中)的内容读取到一个寄存器Rd中,同时将另一个寄存器Rm的内容写入到该内存单元中。
指令的编码格式如图9.10所示。
图9.10 SWP指令编码格式
2.指令的语法格式
SWP{《cond》} 《Rd》,《Rm》,[《Rn》]
① 《cond》
为指令编码中的条件域。它指示指令在什么条件下执行。当《cond》忽略时,指令为无条件执行(cond=AL(Alway))。
② 《Rd》
确定指令的目标寄存器。
③ 《Rm》
该寄存器包含将要被存储到内存单元中的数据。
④ 《Rn》
内存单元地址寄存器。
3.指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
If Rn[1:0]==0b00 then
Temp=memory[Rn,4]
Else if Rn[1:0]==0b01 then
Temp= memory[Rn,4] Rotate_Right 8
Else if Rn[1:0]==0b10 then
Temp= memory[Rn,4] Rotate_Right 16
Else /* Rn[1:0]==0b01 then */
Temp= memory[Rn,4] Rotate_Right 24
Memory[Rn,4]=Rm
Rd=temp
4.指令举例
(1)将r1的内容与r0指向的存储单元的内容进行交换。
SWP r1,r1,[r0]
(2)使用SWP指令进行信号量操作。
SEM EQU 0x10002000
……
WAIT_SEM
MOV r0,#0 ;
LDR r0,=SEM ;
SWP r1,r1,[r0] ;取出信号量
CMP r1,#0 ;判断是否有信号
BEQ WAIN_SEM ;若没有,继续等待
9.4.2 寄存器和存储器字节数据交换指令SWPB
1.指令编码格式
寄存器和存储器字节交换指令SWPB(Swap Byte)。将内存单元中一个字节的内容和寄存器内容进行交换。详情请参见SWP指令。
指令的编码格式如图9.11所示。
图9.11 SWPB指令编码格式
2.指令的语法格式
SWP{《cond》}B 《Rd》,《Rm》,[《Rn》]
① 《cond》
为指令编码中的条件域。它指示指令在什么条件下执行。当《cond》忽略时,指令为无条件执行(cond=AL(Alway))。
② 《Rd》
确定指令的目标寄存器。
③ 《Rm》
该寄存器包含将要被存储到内存单元中的数据。
④ 《Rn》
内存单元地址寄存器。
3.指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
Temp=Memory[Rn,1]
Memory[Rn,1]=Rm[7:0]
Rd=temp
4.指令举例
参见SWP指令。
交换指令是load/Store指令的一种特殊形式。该指令将一个存储器单元内容与指定的寄存器内容相交换。交换指令为进程间同步提供了一种方便的解决途径。该指令产生一对原子Load/Store操作(an atomic load and store operation),该操作发生在一个连续的总线操作中,在操作期间阻止其他任何指令对该存储单元的读/写。
表9.3总结了ARM的交换指令。
表9.3 交换指令
助 记 符含 义操 作
SWP寄存器和存储器字数据交换Rd←[Rd],[Rn]←[Rm](Rn≠Rd或Rm)
SWPB寄存器和存储器字节数据交换Rd←[Rd],[Rn]←[Rm](Rn≠Rd或Rm)
9.4.1 寄存器和存储器字数据交换指令SWP
1.指令编码格式
寄存器和存储器字交换指令SWP(Swap)用于将一个内存单元(该单元地址放在寄存器Rn中)的内容读取到一个寄存器Rd中,同时将另一个寄存器Rm的内容写入到该内存单元中。
指令的编码格式如图9.10所示。
图9.10 SWP指令编码格式
2.指令的语法格式
SWP{《cond》} 《Rd》,《Rm》,[《Rn》]
① 《cond》
为指令编码中的条件域。它指示指令在什么条件下执行。当《cond》忽略时,指令为无条件执行(cond=AL(Alway))。
② 《Rd》
确定指令的目标寄存器。
③ 《Rm》
该寄存器包含将要被存储到内存单元中的数据。
④ 《Rn》
内存单元地址寄存器。
3.指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
If Rn[1:0]==0b00 then
Temp=memory[Rn,4]
Else if Rn[1:0]==0b01 then
Temp= memory[Rn,4] Rotate_Right 8
Else if Rn[1:0]==0b10 then
Temp= memory[Rn,4] Rotate_Right 16
Else /* Rn[1:0]==0b01 then */
Temp= memory[Rn,4] Rotate_Right 24
Memory[Rn,4]=Rm
Rd=temp
4.指令举例
(1)将r1的内容与r0指向的存储单元的内容进行交换。
SWP r1,r1,[r0]
(2)使用SWP指令进行信号量操作。
SEM EQU 0x10002000
……
WAIT_SEM
MOV r0,#0 ;
LDR r0,=SEM ;
SWP r1,r1,[r0] ;取出信号量
CMP r1,#0 ;判断是否有信号
BEQ WAIN_SEM ;若没有,继续等待
9.4.2 寄存器和存储器字节数据交换指令SWPB
1.指令编码格式
寄存器和存储器字节交换指令SWPB(Swap Byte)。将内存单元中一个字节的内容和寄存器内容进行交换。详情请参见SWP指令。
指令的编码格式如图9.11所示。
图9.11 SWPB指令编码格式
2.指令的语法格式
SWP{《cond》}B 《Rd》,《Rm》,[《Rn》]
① 《cond》
为指令编码中的条件域。它指示指令在什么条件下执行。当《cond》忽略时,指令为无条件执行(cond=AL(Alway))。
② 《Rd》
确定指令的目标寄存器。
③ 《Rm》
该寄存器包含将要被存储到内存单元中的数据。
④ 《Rn》
内存单元地址寄存器。
3.指令操作的伪代码
指令操作的伪代码如下面程序段所示。
If ConditionPassed{cond} then
Temp=Memory[Rn,1]
Memory[Rn,1]=Rm[7:0]
Rd=temp
4.指令举例
参见SWP指令。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- arm嵌入式系统基础总结教程
- 一文读懂ARM微处理器指令系统 53次下载
- ARM处理器的寻址方式和指令集介绍 33次下载
- ARM MOV和LDR的指令关系是怎么样的
- 数据传送指令之单数据交换指令 1次下载
- ARM指令系统 0次下载
- arm7指令集
- ARM指令集详解
- arm指令详解手册(精华)
- ARM微处理器的指令系统教材 PPT
- arm汇编指令详解
- ARM/THUMB指令系统
- arm7tdmi(s)指令系统
- 常用arm指令集及汇编
- ARM指令集下载 arm指令集参考手册
- 使用PUT和GET指令通过S7连接在两个CPU之间交换数据 7610次阅读
- IP交换矩阵的关键参数 IP交换矩阵测试原理概述 2540次阅读
- 讲讲ARM指令集格式以及常用的ARM汇编指令 2543次阅读
- 详解ARM WFI和WFE指令 1299次阅读
- 51单片机指令快速记忆方法总结 4821次阅读
- 零基础学ARM:汇编伪指令、lds详解 2548次阅读
- 总结20个超好用的 Unix/Linux 命令指令集 2847次阅读
- 米尔科技ARM Cortex-M3教程指南 2628次阅读
- Cortex-M系列处理器指令集_指令集特性比较总结 7689次阅读
- 浅谈ARM伪指令地址读取 2036次阅读
- 单片机条件转移指令总结 9887次阅读
- 对ARM异常中断的集中情况进行总结,并给出了一些解决方法 6408次阅读
- thumb指令集是什么_thumb指令集与arm指令集的区别 1.8w次阅读
- ARM微处理器助记符指令及其功能描述 2490次阅读
- ARM微处理器的指令的分类与格式 1361次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多