arm调用thumb(相同文件和不同文件)并且返回 简单小例子
2012-11-15 14:43
260 查看
一、同一个文件下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:
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:
相关文章推荐
- OC多文件开发简单例子实现(重点:self在对象方法中调用其他对象方法的3种方法)
- 一个简单的调用脚本文件的例子
- 操作CSV文件例子,并且加上文字处理:统计相同功能的问题单(报告画图用)
- 一日一记 扫描文件 并且返回匹配名字相同的文件及后缀名字
- 两次fopen不同的文件返回相同的FILE* 地址
- java Callable和Future并发调用,并且返回结果小例子
- C++调用Lua读取配置文件的一个简单例子
- 编写存储过程,并且使用java代码调用存储过程的简单例子
- 递归调用简单例子——按层次列出文件夹下所有文件和文件夹
- 如何用java调用网站的API,获得json文件,并且简单解析它?
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。
- [转]用DELPHI写个简单例子,调用PING命令并且取回PING结果显示MSG BOX里,要通过管道技术取
- Android 使用Retrofit自定义Converter解析相同接口返回不同数据
- ajax批量下载文件,动态构建一个Form 并且提交获取返回的文件流
- Android调用天气预报的WebService简单例子
- spring mvc(注解)上传文件的简单例子
- JNI 简单例子小结 (调用外部DLL)
- .NET调用控制台下生成的exe文件,传参及获取返回参数
- 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
- spring mvc(注解)上传文件的简单例子