Предположим, у меня есть функция, как показано ниже:
# cat 003.c
int foo(int a, int b)
{
return a+b;
}
И скомпилируйте вот так:
gcc -S 003.c
Получается следующий результат сборки:
.file "003.c"
.text
.globl foo
.type foo, @function
foo:
.LFB2:
pushq %rbp
.LCFI0:
movq %rsp, %rbp
.LCFI1:
movl %edi, -4(%rbp)
movl %esi, -8(%rbp)
movl -8(%rbp), %edx
movl -4(%rbp), %eax
addl %edx, %eax
leave
ret
.LFE2:
.size foo,.-foo /* size of the function foo, how to get it?*/
Последняя строка выше действительно получает размер функции. Где компилятор хранит размер? Могу ли я каким-то образом получить размер функции в исходной программе C, используя C или встроенный ассемблер ?