ARM/Thumb交互工作[原]

在使用T版本的ARM内核的处理器时,经常要使用ARM/Thum交互工作,总结了一些需要注意的问题:编写汇编被调过程、编译时应该注意的问题、ARM/Thumb间的相互调用。

一.编写汇编被调过程
如果需要交互工作,则所编写的函数应该遵循ATPCS标准。
1.叶函数(函数内不包括函数的调用)
使用BX LR返回。
2.非叶函数
(1)在入口处保护返回地址(lr)以及寄存器(r0-r7,r8-r12(ARM))
(2)返回前恢复保护的寄存器
(3)使用BX返回

二.编译时应该注意的问题
1.编译用于交互工作的ARM汇编代码
armasm -32 -apcs /interwork
2.编译用户交互工作的Thumb汇编代码
armasm -16 -apcs /interwork

***说明:
(1)关于汇编代码,也可在程序中使用CODE32或CODE16命令明确告知汇编程序下面的代码是ARM代码还是Thumb代码,这样在汇编时则无需使用-32、-16选项
(2)当然也可在单个汇编原文件中混合使用ARM以及Thumb代码,这是需要使用CODE32以及CODE16命令,并且需要注意状态的切换,使用BX Rn,根据Rn的Bit[0]来确定目标是ARM代码还是Thumb代码

3.编译用于交互工作的ARM C代码
armcc -apcs /interwork
4.编译用于交互工作的Thumb C代码
tcc -apcs /interwork

***说明:基于ADS1.2

三.ARM/Thumb之间的相互调用
交互的调用遵循以下原则:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值