1 函数声明为:
void foo(int bar, int *baz)
{
char snik[4];
short why;
why = (short) [snik+2];
*why =50;
}
编译时:一块纪录里显示为如下(内存由高到低分布)):函数的参数内存开辟,调用函数信息,内部局部变量分配
int main( int argc,char**argv)
{
int i = 4;
foo (i, &i);
return 0;
}
主函数汇编过程:
SP = SP -4;
M[SP] =4;
SP = SP -8;//为后续参数流出空间
R1 =M[SP+8];
R2 =SP +8;
M[SP] =R1;
M[SP+4] =R2;
Call ;
SP=SP+8;//回收空间
RV =0;//返回值
foo函数:
SP = SP -8;
R1 = SP+6;
M[SP] = R1;
R1= M[SP];
M[R1]= .5 50;
SP =SP +8;
RET; //返回
2 递归部分没看懂,太复杂了。
编程范式,函数汇编过程 7/11/18
最新推荐文章于 2025-08-02 16:20:07 发布
本文详细解析了一个C函数的声明与调用过程,包括内存布局、参数传递及局部变量分配等内容。通过具体示例,展示了函数调用时的栈帧结构,参数如何在内存中排列,以及局部变量的分配方式。
1137

被折叠的 条评论
为什么被折叠?



