arm调用thumb(相同文件和不同文件)并且返回 简单小例子

2023-12-04 06:08

本文主要是介绍arm调用thumb(相同文件和不同文件)并且返回 简单小例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、同一个文件下arm调用thumb并且返回:

     AREA EXAMPLE,CODE,READONLY
     
     CODE16                  ;thumb 代码
ThumbSeg
     MOV    R0,#10
     BX       LR                  ;返回到arm状态
 
     
     ENTRY                      ;程序入口处
     CODE32
Start
     MOV   R0,#1
     ADR    R1,ThumbSeg + 1
     MOV    LR,PC              ; 保存返回地址
     BX        R1                    ; 切换到thumb状态
     MOV    R0,#20
     NOP                              ; 空操作
     END
     

二、两个文件下arm调用thumb并且返回:

注意此时用的是BL进行跳转,因为中间要经历一个veneers

1、arms.s文件,内容为:

     AREA EXAMPLE,CODE,READONLY
     IMPORT ThumbSeg ;导入thumb标号
 
     ENTRY            ;程序入口处
     CODE32
Start
     MOV   R0,#1
     BL    ThumbSeg    ; 切换到thumb状态,注意用的是BL,内部会经历一个veneers
     MOV   R0,#20
     NOP               ; 空操作
     END
    

2、thumb.s文件,内容为:

     AREA EXAMPLE,CODE,READONLY
     EXPORT ThumbSeg; 导出标号
     CODE16                     ;thumb 代码
ThumbSeg
     MOV   R0,#10
     BX      LR                  ;返回到arm状态
     END


3、如果直接这样make会用这样的错误

                                                                     


需要设置:

调试时会看到VENEERS:


这篇关于arm调用thumb(相同文件和不同文件)并且返回 简单小例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/452419

相关文章

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语