> 文章列表 > linux0.12-3-4

linux0.12-3-4

linux0.12-3-4

71–3.4-C与汇编程序的相互调用
71–3.4.1-C函数调用机制
76–3.4.2-在汇编程序中调用C函数
78–3.4.3-在C程序中调用汇编函数

3-4 C语言和汇编相互调用的
原因:为了效率,C语言和汇编之间会相互调用。

3-4-1 C函数调用
head.s如何跳转到main.c?
我们先讨论C函数的调用机制、控制权传递方式;
①数据的传递和局部变量存储空间的分配与回收通过栈操作来实现;
解释:栈被用来传递函数参数、存储返回信息、临时保存寄存器原有值
单个函数调用操作所使用的栈部分被称为栈帧;
②8086CPU为控制传递提供了简单的指令

CALL和RET

主要理解 ebp esp

3-4-2 在汇编程序中调用C函数
将参数压如栈中;(最右边的先压入);
调用CALL指令去执行被调用的函数(将调用者下一条指令执行地址压入栈 EIP);
_system_call
->sys_call_table
{
sys_fork
{
_find_empty_process
_copy_process
}
}

3-4-3 在C程序中调用汇编函数
Linux内核很少用到;
可以尝试实验代码;