Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 汇编语言 > ARM与Thumb状态切换及其代码分析
【标  题】:ARM与Thumb状态切换及其代码分析
【关键字】:ARM,Thumb
【来  源】:http://blog.csdn.net/fly1019/archive/2006/10/03/1319326.aspx

ARM与Thumb状态切换及其代码分析

Your Ad Here  
Thumb指令在相比于ARM指令具有更高的代码密度,但是在运行效率上略低于ARM指令集,而且Thumb只是ARM指令集的一个子集。所有的ARM指令都是可以条件执行的,而Thumb指令仅有一条指令具备条件执行功能。所以很多应用程序需要两者的混合编程,因此存在ARM与Thumb状态之间相互切换,而且相互之间的状态切换的开销几乎为零。
ARM与Thumb之间的状态切换通过专用的转移交换指令BX来实现。BX指令以通用寄存器(R0~R15)为操作数,通过拷贝Rn到PC实现绝对跳转。BX利用Rn寄存器中目的地址值的最后一位判断跳转后的状态。
下面是一段直接进行状态切换的代码:
CODE32                        ;程序从ARM状态开始
   ADR r0, ThumbProg+1        ;跳转到ThumbProg
   BX r0                      ;程序切换到Thumb状态
 
CODE16                        ;Code16指示编译器后面为Thumb指令
ThumbProg
   MOV r2, #2
   MOV r3, #3
   ADD r2, r2, r3
   ADR r0, ARMProg
   BX r0                      ;跳转到ARMProg,程序切换到ARM状态
 
CODE32                        ;code32指示编译器后面为ARM指令
ARMProg
   MOV r4, #4
   MOV r5, #5
   ADD r4, r4, r5
 
得到DataSet 中字段的值:【上一篇】
用户自定义控件学习笔记:【下一篇】
【相关文章】
  • 学习ARM高级应用的一些感想
  • arch/arm/kernel/head-armv.S学习
  • ARM目标机拨号上网的实现
  • arch/arm/boot/compressed/head.S初试
  • Go To Statement Considered Harmful - Dijkstra
  • arm kernel boot order内核启动顺序
  • 在FC5下架设arm交叉编译平台
  • [手机平台]Alarm事件管理器设计备忘录
  • ARM ads
  • ARM与uClinux
  • 【随机文章】
  • IP地址分类ABC
  • 从动画播放到现在的时间,并转化为 秒
  • 查看所有已安装的字体
  • 提升PHP执行速度全攻略(下) 
  • Flash视频教程:制作浮雕和阴影文字
  • 远程得到任意远程NT主机帐号List的源代码
  • XML 和Java – 是敌还是友?
  • SPF: Sender Policy Framework
  • MapX中为出图加上公里格和边框
  • 取任务栏的句柄及相关信息(仅以取任务栏的高度为例)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.