exemple fastcall GCC
-
21-08-2019 - |
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?
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
Autres conseils
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow