Fastcall GCC Beispiel
-
21-08-2019 - |
Frage
Könnte jemand ein Beispiel für die Verwendung von Fastcall für mit gcc Verwendung zur Verfügung stellen? Wenn möglich, könnten Sie die entsprechende Aufforderung liefern, ohne Fastcall und erklären, wie sie anders wäre?
Lösung
Es gibt keinen Unterschied in der Art und Weise ein bestimmte Funktionsaufruf in C-Code erscheinen würde. Der einzige Unterschied in der Funktionsdeklaration wäre. Das GCC Handbuch hat weitere Details.
$ 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
Andere Tipps
Hier sind ein paar Links
Ist es möglich, davon zu überzeugen, GCC die Fastcall-Aufrufkonvention?
nachahmenLizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow