Как получить размер функции C из программы C или с помощью встроенного ассемблера?

Предположим, у меня есть функция, как показано ниже:

# 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 или встроенный ассемблер ?

7
задан Ciro Santilli 新疆改造中心法轮功六四事件 15 July 2015 в 11:22
поделиться