更新以澄清:
Wrapper函数定义为在用户模式下调用的函数,它启动对系统调用的调用(在内核模式下)。例如open或printf。
我想知道包装函数可以获得的参数数量是否有任何限制?
我的意思是因为寄存器数量应该是6,但我不确定。我知道系统调用仅限于六个方面。 (我说的是存在更多寄存器的32位和64位)。
感谢
答案 0 :(得分:0)
包装函数定义为在用户模式下调用的函数 启动对系统调用的调用(在内核模式下)。比如打开, 或printf。
通过您自己的定义,对于他们可以接收的参数数量有无限制。 printf
应该马上告诉你。 (但请注意,open
本身就是一个系统调用,并且对参数的数量有限制)
但是当谈到系统调用,如open
,write
等时,Linux-x86 限制为6个参数。 Read here至于为何以及如何做到这一点。
以下是关于此
的另一篇SO帖子What are the calling conventions for UNIX & Linux system calls on x86-64