arm汇编学习(六)跳转到thumb状态

发布者:Xinmei最新更新时间:2016-07-12 来源: eefocus关键字:arm  汇编学习  thumb状态 手机看文章 扫描二维码
随时随地手机看文章
通常函数返回使用 pop {r7,pc}或bx lr等方式(bx,b类似jmp为跳转指令,但bx可以指定跳转区域究竟为thumb还是arm指令。

thumb指令指令的时候,直接填写该地址却总是产生SIGSYS信号(非法指令执行)。
原因就是该函数为thumb指令,因此跳转时必须要把指令地址的最低位设置为1(bx 通过这一位来区分指令集),所以函数地址就加了一。


thumb指令集与arm指令集切换

mov
R0,#5     ;Argument to function is in R0
add
R1,PC,#1     ;Load address of SUB_BRANCH, Set for THUMB by adding 1
BX     R1     ;R1 contains address of SUB_BRANCH+1
;Assembler-specific instruction to switch to Thumb
SUB_BRANCH:
BL
thumb_sub     ;Must be in a space of +/- 4 MB
add
R1,#7     ;Point to SUB_RETURN with bit 0 clear
BX
R1
;Assembler-specific instruction to switch to ARM 
SUB_RETURN:


arm状态下指令的地址末两位都是0
而thumb状态下指令地址的末尾是0
thum1+1表明你即将跳入thumb状态,系统会自动调整地址的

关键字:arm  汇编学习  thumb状态 引用地址:arm汇编学习(六)跳转到thumb状态

上一篇:ARM汇编学习
下一篇:Android ARM 汇编学习(一)

推荐阅读最新更新时间:2024-03-16 14:59

英特尔代工业务与 Arm 宣布展开合作,涉及多代前沿系统芯片设计
此次合作将为芯片设计者们带来 Arm 内核与英特尔埃米时代的制程工艺技术的强大组合 加州圣克拉拉和英国剑桥,2023 年 4 月 12 日—— 英特尔代工服务事业部 (IFS) 和 Arm 今日宣布签署了一项涉及多代前沿系统芯片设计。 该协议旨在使芯片设计公司能够利用 Intel 18A 制程工艺来开发低功耗计算系统级芯片 (SoC)。此次合作将首先聚焦于移动系统级芯片的设计,未来有望扩展到汽车、物联网、数据中心、航空和政府应用领域。Arm® 的客户在设计下一代移动系统级芯片时将受益于出色的 Intel 18A 制程工艺技术,该技术带来了全新突破性的晶体管技术,有效地降低了功耗并提高晶体管性能。与此同时,他们还将受益于英特尔代
[嵌入式]
处理器架构 (十二) arm 各版本架构的异同
发布时间不同 1994 v4 1998 v5 2002 v6 2005 v7 2011 v8 2021 v9 架构定义了什么 1 https://community.arm.com/cn/f/discussions/2471/armv7-armv8/13977#13977
[单片机]
处理器架构 (十二) <font color='red'>arm</font> 各版本架构的异同
ARM存储格式之大端小端
开头讲个有关大端小端的故事:   端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。     我们知道在内存中数据是以字节为单位进行存储的,每个地址单元对应着一个字节(byte),一个字节为8位(bite)。但是很多时候数据除了8bit额char外
[单片机]
基于ARM技术的嵌入式系统的自动化配送系统
自动化管理操作系统已经是现代企业必不可少的一部分,视频图像传输监控系统已经广泛的应用于交通、医院、银行、家居和视频会议等重要场合。早期的模拟视频监控系统不能联网,只能与管理中心进行点对点(Point to-Point)通信,随着图像与视频处理技术、网络技术和自动控制技术的发展,视频图像系统已经过渡到了数字化的网络传输。它以数字视频的压缩、传输、存储和播放(回放)为核心,采用先进的数字图像压缩编/解码技术和传输技术,将智能图像处理与识别技术用于图像显示、调整、跟踪,根据现场环境对物体进行跟踪识别,对图像进行分析和处理。    1 自动化配送系统构成    本系统基于USB摄像头的图像采集子系统,ARM处理器子系统和无线网络数据传输子系
[单片机]
基于<font color='red'>ARM</font>技术的嵌入式系统的自动化配送系统
基于ARM嵌入式系统的ISP设计
应用程序的固化是嵌入式产品开发和生产过程中一个重要环节。基于ARM的嵌入式系统常用的程序固化方法是,用仿真器通过JTAG口将程序烧录到Flash里,在产品的开发阶段,使用仿真器几乎是必然的;然而到了产品的生产阶段,进行应用程序烧录或升级操作的往往是生产线上的工人,他们不易掌握仿真器的使用方法,而且在生产阶段也需要把JTAG调试口封住以防软件被窥视。笔者在使用意法半导体的STR730开发产品的过程中,设计了一种通过串口进行ISP(InSystemProgramming,在系统编程)的方案。该方案成本低,生产线使用起来也很方便,而且即使升级过程中发生掉电之类的意外也不会影响下一次升级,安全而可靠。 1 硬件连接 ISP方案的硬
[单片机]
基于<font color='red'>ARM</font>嵌入式系统的ISP设计
arm-linux-gcc 裸机程序开发(一)
以前开发arm裸机程序都是在ADS1.2开发环境下编译和调试的。刚开始时初学嵌入式好多东西不懂,选择这个开发环境的理由,一是资料多的,mini2440开发板上提供了很多例程可以参考,网上几乎所有arm裸机程序都是基于ADS1.2开发的。二是开发环境友善,虽然后来感觉ADS1.2有点难用,但毕竟是IDE的环境,对初学者来说总比命令行的方式更加直观与方便。随着学习的深入,感觉它就像傻瓜相机一样,虽然好用但屏蔽了很多内容,影响了我们深入理解代码编译以及链接的细节。而且ADS对于程序的开发没有GNU工具链灵活。这段时间因为需要,又要编写一些arm裸机程序。自己已经用Linux习惯了,不想再切回windows下工作了。所以,最近对linux
[单片机]
基于ARM与有理数滤波的甲烷体积分数监测系统
随着能源需求的增加,石油、天然气以及煤炭开发不断扩大,生产环境中含有大量甲烷,甲烷属于易燃易爆气体,与空气混合能形成爆炸性混合物,遇热源和明火有燃烧爆炸的危险。这使得探测甲烷气体在工业生产中的浓度成为面临的一个重要问题。甲烷检测多以热导式分析法、气相色谱法和电化学方法为主,不仅检测周期长而且探测范围小。本系统选用红外气体传感器,具有响应速度快、抗干扰能力强的优点。选用ARM核心的S3C44BOX处理器,提高系统处理器性能。在信号调理中采用了锁相放大器,软件处理中采用了有理数滤波技术,处理器端可以通过串口与PC通信完成监控计算机的相关操作。由此构成的甲烷体积分数监测系统可以广泛应用在矿山矿井中,对于预防事故的发生具有重要意义。 1
[测试测量]
基于<font color='red'>ARM</font>与有理数滤波的甲烷体积分数监测系统
ARM汇编伪指令(1)
ARM汇编程序由机器指令、伪指令和宏指令组成。 1,符号定义伪指令 符号定义伪指令用于定义ARM汇编程序的变量、对变量进行赋值、定义寄存器名称。 全局变量声明: GBLA,GBLL,GBLS 局部变量声明: LCLA,LCLL,LCLS 变量赋值: SETA,SETL,SETS 为一个通用寄存器列表定义名称: RLIST 为一个协处理器的寄存器定义名称: CN 为一个协处理器定义名称: CP 为一个VFP寄存器定义名称: DN,SN 为一个FPA浮点寄存器定义名称: FN 1)GBLA,GBLL,GBLS 全局变量声明,作用范围是包含该变量的源程序。 GBLA variable ;声明全局算术变量 GBL
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved