电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>ARM>ARM的交换指令总结

ARM的交换指令总结

2017-10-19 | rar | 0.6 MB | 次下载 | 1积分

资料介绍

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所示。
  ARM的交换指令总结
  图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所示。
  ARM的交换指令总结
  图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指令。
 
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1490次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  92次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  10次下载  |  免费
  11. 6基于AT89C2051/4051单片机编程器的实验
  12. 0.11 MB  |  4次下载  |  免费
  13. 7蓝牙设备在嵌入式领域的广泛应用
  14. 0.63 MB  |  3次下载  |  免费
  15. 89天练会电子电路识图
  16. 5.91 MB  |  3次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537791次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233045次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费