Question

pourrait quelqu'un fournir un exemple d'utilisation fastcall pour une utilisation avec gcc? Si possible pourrait vous fournir l'équivalent de l'appel sans utiliser fastcall et expliquer comment ils seraient différentes?

Était-ce utile?

La solution

Il n'y a pas de différence dans la façon dont un appel de fonction donnée apparaît dans le code C. La seule différence serait dans la déclaration de fonction. GCC manuel a plus de détails.

$ cat fastcall.c
extern void foo1(int x, int y, int z, int a) __attribute__((fastcall));
extern void foo2(int x, int y, int z, int a);

void bar1()
{
    foo1(99, 100, 101, 102);
}

void bar2()
{
    foo2(89, 90, 91, 92);
}

$ gcc -m32 -O3 -S fastcall.c -o -
.
.
bar1:
.
.    
    movl    $100, %edx
    movl    $99, %ecx
    movl    $102, 4(%esp)
    movl    $101, (%esp)
    call    foo1
.
.
bar2:
.
.
    movl    $92, 12(%esp)
    movl    $91, 8(%esp)
    movl    $90, 4(%esp)
    movl    $89, (%esp)
    call    foo2
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top