问题引入
在学习C语言时,老师强调过调用函数时会有开销,但是函数调用的开销体现在哪几个方面并不十分清楚!!
举例说明
写一个两数求和的代码,此代码中不调用函数
#include <stdio.h>
int main()
{
int a = 10, b = 20, c = 0;
c = a + b;
printf("%d\n", c);
return 0;
}
该程序对应的反汇编如下:
#include <stdio.h>
int main()
{
00BA13C0 push ebp
00BA13C1 mov ebp,esp
00BA13C3 sub esp,0E4h
00BA13C9 push ebx
00BA13CA push esi
00BA13CB push edi
00BA13CC lea edi,[ebp-0E4h]
00BA13D2 mov ecx,39h
00BA13D7 mov eax,0CCCCCCCCh
00BA13DC rep stos dword ptr es:[edi]
int a = 10, b = 20, c = 0;
00BA13DE mov dword ptr [a],0Ah
00BA13E5 mov dword ptr [b],14h
00BA13EC mov