10

Could some one provide an example use of fastcall for use with gcc? If possible could you provide the equivalent call without using fastcall and explain how they would be different?

Björn Lindqvist
  • 19,221
  • 20
  • 87
  • 122
Ian Lewis
  • 917
  • 1
  • 7
  • 17

2 Answers2

17

There is no difference in the way a given function call would appear in C code. The only difference would be in the function declaration. The GCC manual has more 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
sigjuice
  • 28,661
  • 12
  • 68
  • 93
2

Here are a few links

Is it possible to convince GCC to mimic the fastcall calling convention?

http://www.google.com/search?q=gcc+fastcall

Community
  • 1
  • 1
Gregor Brandt
  • 7,659
  • 38
  • 59