C语言环境初始化

本文详细介绍了C语言环境初始化的过程,包括栈的运作机制、作用及初始化,以及BSS段的功能和初始化BSS段的方法。此外,还探讨了C语言与汇编的混合编程,包括汇编如何调用C函数、C如何调用汇编函数以及C语内嵌汇编的使用规范和注意事项。

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

一、栈
1.简介:
一个程序对应一个进程,一个进程对应一个栈空间,然后一个程序对应多个函数,每个函数都会在该栈空间分配到一个完全属于自己的子空间,该子空间就是栈帧。栈帧有边界,上边界是FP(r11),下边界是SP(r13),每一个主调函数的边界都会存放在她的被调函数的栈帧中。
2.作用:
(1)保存局部变量
(2)当参数大于四个时候可以传递参数
(3)可以保存寄存器的值
3.初始化栈
这里写图片描述

二、BSS段
1.作用:
(1)初始化的全局变量存放在data段
(2)局部变量存放在栈
(3)malloc出的变量存放在堆
(4)未初始化的全局变量存放在BSS段
2.初始化BSS段:
这里写图片描述
三、C语言与汇编混合编程
1.简介:
(1)汇编的效率高,直接转换为机器语言,而C要经过转换为汇编
(2)汇编直接控制硬件的寄存器
(3)C编写方便简洁
2.汇编调用C语言:
ldr pc,=函数名
例如:在start.s中添加这里写图片描述
可以从汇编跳转到C语言main函数开始执行。
3.C语言调用汇编:
汇编函数(标号)需要先在汇编里声明为全局属性
然后在c里面直接:
标号名();
4.C语内嵌汇编:
(1)格式:
asm(

       汇编语句部分
           :输出部分
           :输入部分
           :破坏描述部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值