ARM 汇编与C之间 的调用

本文详细介绍了在ARM架构下,汇编如何调用C语言函数以及C语言如何调用汇编函数的过程。在汇编调用C时,涉及到栈的初始化、BSS段的处理、参数传递及返回值的存储。而在C调用汇编时,只需将汇编函数声明为全局。例子中展示了具体的实现和测试方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 汇编调用 C

  1. 初始化栈

  2. 初始化BSS段 (BSS 段是C语言存放未初始化的全局变量,或者初始化为0 的全局变量) 

  3 .使用 r0 ,r1, r2, r3 给函数传参,如果多于  4 个参数使用栈的方式传参

  4. 返回值放在 r0, r1 中,最大32位数据, 一般使用 r0 就可以满足要求

例子: 汇编文件 start.s

.text  @ 表示汇编文件开始

/****初始化栈*****/
ldr sp, =0x40000100
mov r0, #0x5
mov r1, #0x6
    
/***初始化bss段***/
@ bss段地址由链接时编译器分配
ldr r2, =__bss_start         @ BSS 起始地址
ldr r3, =__bss_end__         @ BSS 结束地址
mov
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值