为什么要将esp+11的地址存到esp+4中去
时间: 2023-08-18 19:06:26 浏览: 133
rtthread + STM32F407VE + esp8266 +SD卡 从网络下载文件存到SD卡中
这是因为在函数调用过程中,函数的参数是通过栈来传递的。在x86架构中,函数参数是从右往左依次压入栈中的,函数调用的过程如下:
1. 首先将函数的返回地址压入栈中。
2. 然后将函数的第一个参数压入栈中。
3. 接着将函数的第二个参数压入栈中。
4. 以此类推,直到将所有参数都压入栈中。
5. 最后调用函数,函数执行完毕后,将返回值存储到EAX寄存器中,并将栈指针(ESP)恢复到函数调用前的值。
在这段代码中,我们需要将输入的字符串作为函数的第一个参数传递给scanf函数,而ESP+4正是函数的第一个参数的内存地址。因此,我们需要将输入的字符串存储到ESP+4的内存地址中。由于在之前的指令中,ESP+11的内存地址已经存储了输入的字符串,因此我们需要将其复制到ESP+4的内存地址中,以便将其作为函数的第一个参数传递给scanf函数。
阅读全文