C语言和汇编混合编程

1.在C/C++程序中内嵌汇编指令

在ARM 的C语言程序中,使用关键字__asm(下划线是两个)来标识一段汇编指令。

2.在汇编程序中访问C程序变量

汇编可以通过对C程序中的声明的全局变量进行地间接访问:
1)使用IMPORT伪指令声明所要调用的全局变量;
2)使用LDR指令读取全局变量的内存地址,通常该全局变量的内存地址存放在程序的数据缓冲池中;
3)根据该数据类型,使用相应的LDR指令读取该全局变量的值,或者使用相应的STR指令修改该全局变量的值。

3.C程序与汇编互相调用

要注意寄存器的使用规则:
1)子程序间通过寄存器R0~R3来传递参数;
2)寄存器R15是程序计数器,记作PC;
3)寄存器R14称为链接寄存器,记作LR,用于保存子函数的返回地址;
4)在子程序中,使用寄存器R4~R11来保存局部变量;
5)寄存器R13用于数据栈指针,记作SP,寄存器SP在进入子程序时的值和退出子程序时的值必须同等;
6)寄存器R12用于保存SP,在函数返回时使用该寄存器出栈,记作IP。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值