c语言函数调用规范-基于arm 分析

本文探讨C语言函数的编译原理,以ARM架构AAPCS为背景,分析函数如何转换为汇编指令,以及栈、堆、全局数据段的内存管理。C语言函数以栈维护局部变量,寄存器用于传参和返回值,AAPCS规定了资源分配规则,确保调用者和被调用者之间的协调。实验展示了传参、返回值和局部变量的处理方式。

c语言函数及AAPCS的理解-基于arm分析

本文为个人学习中的笔记整理,大多是自己的理解,存在较多口语化描述,可能存在一些错误或描述不准确的地方,欢迎大家指正,共同学习。

1.函数是什么-C语言执行或编译的最小单位

我们在编写C语言程序的时候,并没有办法脱离函数编程,c编译器也是以函数为单位对文件进行编译,通常C语言编程的入口为main,存在于函数内的语句或指令会被执行,C语言编译器并不允许任何可被编译为汇编指令的语句出现在函数之外,我们可以这样理解,我们会写的C语言程序会以函数为单位被打包为一个一个的指令块(本文暂不讨论数据编译后的存储),通过反汇编来看一下函数在编译之后的存储形式:

对如下函数编译之后进行反汇编:

void test3 (void)
{
   
   
}
void test2 (void)
{
   
   
    test3();
}
void test1 (void)
{
   
   
    test2();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值