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
最新推荐文章于 2024-06-24 10:22:37 发布