当前位置:  开发笔记 > 编程语言 > 正文

Fastcall GCC示例

如何解决《FastcallGCC示例》经验,为你挑选了1个好方法。

有人可以使用fastcall与gcc一起使用吗?如果可能的话,你可以在不使用fastcall的情况下提供等效的电话,并解释它们会有什么不同吗?



1> sigjuice..:

给定函数调用在C代码中的显示方式没有区别.唯一的区别在于函数声明.在GCC手册有更多的细节.

$ 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

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有