Chinaunix首页 | 论坛 | 博客
  • 博客访问: 478510
  • 博文数量: 115
  • 博客积分: 5016
  • 博客等级: 大校
  • 技术积分: 1401
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-21 16:03
文章分类

全部博文(115)

文章存档

2013年(1)

2010年(17)

2009年(76)

2008年(21)

我的朋友

分类: LINUX

2009-07-02 10:48:32

最近在阅读Linux内核源代码的时候,发现有很多__attribute__其中有一个宏FASTCALL(x)或者fastcall用的就比较多,定义如下:
#define FASTCALL(x)x __attribute__((regparm(3)))
#define fastcall __attribute__((regparm(3)))
意思是,最多可以使用3个寄存器(或许是eax,edx,ecx)来传送前3个参数,其他参数则压入栈中,而一般来说,函数的调用是基于栈的。

#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
意思就是使用0个寄存器来进行参数传递,顾名思义它是想使得调用这个函数时的所有参数都压入栈中,相对于FASTCALL的使用方式当然是要慢一些了
阅读(1085) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~