Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17843
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 114
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-06 21:17
文章分类
文章存档

2018年(1)

2014年(1)

2013年(5)

我的朋友

分类: LINUX

2013-09-14 15:20:27


#define fastcall __attribute__((regparm(3)))
#define asmlinkage __attribute__((regparm(0)))

gcc编译器在汇编过程中调用c语言函数时传递参数有两种方法:一种是通过堆栈,另一种是通过寄存器。缺省时采用寄存器,假如你要在你的汇编过程中调用c语言函数,并且想通过堆栈传递参数,你定义的c函数时要在函数前加上宏asmlinkage。

fastcall 指导GCC连接时把fastcall修饰的函数的前三个参数用寄存器传递。
asmlinkage表示这些函数通过堆栈而不是通过寄存器传递参数。
asmlinkage和fastcall不能共存。
__user 宏简单告诉编译器(通过 noderef)不应该解除这个指针的引用(因为在当前地址空间中它是没有意义的)。
阅读(830) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~