, @Thomas Matthews ...
, , , , .
, , gcc:
int func(int a, int b)
{
return a + b;
}
int main(int argc, char ** argv)
{
int a, b;
a = b = 100;
int c = func(a, b);
}
, , (: printf, ).
-ggdb, gdb gdb <application>, , , disassemble. :
Breakpoint 1, func (a=100, b=100) at program.cpp:3
3 return a + b;
(gdb) disas
Dump of assembler code for function func(int, int):
0x00000000004004d6 <+0>: push %rbp
0x00000000004004d7 <+1>: mov %rsp,%rbp
0x00000000004004da <+4>: mov %edi,-0x4(%rbp)
0x00000000004004dd <+7>: mov %esi,-0x8(%rbp)
=> 0x00000000004004e0 <+10>: mov -0x4(%rbp),%edx
0x00000000004004e3 <+13>: mov -0x8(%rbp),%eax
0x00000000004004e6 <+16>: add %edx,%eax
0x00000000004004e8 <+18>: pop %rbp
0x00000000004004e9 <+19>: retq
End of assembler dump.
, , , - rbp (pop %rbp), (retq). , - .