一、栈
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(
汇编语句部分
:输出部分
:输入部分
:破坏描述部分