x0x1概念:
一个函数的参数系统是将其从x0到x7去赋值的,但是计算后的结果却是返回到x0寄存器中,这样便涉及到寄存器数据的保护。
原理:
对公用的参数和返回值先做栈保护存储起来,然后等要用的时候到对应的内存地址中取出来使用。
实例:
1.创建demo工程。
2.在mian文件中写入如下代码:
/** 系统方法 自动创建汇编代码 */
int sum(int a,int b){
return a + b;
}
/** 嵌套函数方法 */
int func(int a,int b){
int c = sum(a, b);
int d = sum(a, b);
return d;
}
在main函数中去掉循环调用下面函数;
func(1, 2);
3.函数运行结果:

以上程序执行步骤图片已经详细说明。
4.原理:
因为函数的返回值默认在x0中而参数是在x0-x7中所以程序刚执行的时候参数a是存储在x0之中的如果不进行内存存储,那么在c的第一个求和运算中x0将会由原来的参数a变成a+b的和,这样会导致d的参数a由于x0的改变就获取不到了。
所以解决这个问题的方法是将参数事先在开辟的栈空间存储起来,每次用到的时候就到指定地址取出来用,而计算结果返回再x0中以后同样在栈空间保存在内存中,需要用的时候到指定内存读取。
5.内存执行图:

以上就是嵌套函数的数据处理流程。
网友评论