VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1544|回复: 1

_attribute__

[复制链接]

2

主题

3

帖子

0.00

积分

新手上路

Rank: 1

积分
0.00
发表于 2020-12-22 16:58:33 | 显示全部楼层 |阅读模式
_attribute__是关键字,是gcc的C语言扩展,regparm(0)表示不从寄存器传递参数。如果是__attribute__((regparm(3))),
那么调用函数的时候参数不是通过栈传递,而是直接放到寄存器里,被调用函数直接从寄存器取参数
函数定义前加宏asmlinkage ,表示这些函数通过堆栈而不是通过寄存器传递参数。gcc编译器在汇编过程中调用c语言函数时
传递参数有两种方法:一种是通过堆栈,另一种是通过寄存器。缺省时采用寄存器,假如你要在你的汇编过程中调用c语言函数,并且想通过堆栈传递参数,你定义的c函数时要在函数前加上宏asmlinkage

回复

使用道具 举报

2

主题

3

帖子

0.00

积分

新手上路

Rank: 1

积分
0.00
 楼主| 发表于 2020-12-22 17:03:20 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表