Inside main () От 0x080489e9 до 0x080489f7 // объявляя три 4-байтовых целых числа и инициализируя их 1,3 и 9, мы можем принять эту часть как:
int a = 1;
int b = 3;
int c = 9;
От 0x08048a01 до 0x08048a0a // pushingпеременные справа налево для отправки их в качестве аргумента функции blender, затем вызывает blender blender (a, b, c);
Inside blender ()
0x08048a41 <+13>: mov edx,DWORD PTR [ebp+0x8] // edx = 1
0x08048a44 <+16>: mov eax,DWORD PTR [ebp+0xc] // eax = 3
0x08048a47 <+19>: add eax,edx // eax = eax+edx = 4
0x08048a49 <+21>: add eax,eax //eax = 2*eax
0x08048a4b <+23>: imul eax,DWORD PTR [ebp+0x10] //[ebp +0x10] = 9 imul means signed multiply so this means; eax = eax * 9
pop
что-то вроде
return 2*(a+b) *c // 2*(1+3) * 9 = 72
После вызова blender он вызывает 0x08048a1d <+81>: вызывает функцию 0x804f100 и печатает результат, между объявлением переменной внутри printf
prinf("%d" , blender())
нет никакого другого объявления переменнойКонечный код выглядит так:
int main()
{
int a = 1;
int b = 3;
int c = 9;
printf("%d" , blender(a,b,c));
return 0;
}
int blender(int a, int b, int c)
{
return 2*(a+b) * c;
}