Linux 如何向系统调用传递6个以上的参数

Linux 如何向系统调用传递6个以上的参数,linux,assembly,operating-system,system-calls,Linux,Assembly,Operating System,System Calls,我正在读一本书,这本书解释了linux中的调用约定,以及系统调用是如何实现的 我读过关于fastcall的文章,它将参数传递给系统调用,并将其传递给6个diffrenet寄存器 我还读到,当我需要传递超过6个寄存器时,我确实需要传递一个包含这些参数的结构 有人能告诉我怎么做吗?我真的没有找到任何信息。您可能没有传递很多参数;您定义了一个struct,并通过几个(不超过4个)其他参数传递指向该struct的指针。看到或作为一个例子;内核必须限制系统调用参数的数量(因为它们是通过寄存器传递的,…)@

我正在读一本书,这本书解释了linux中的调用约定,以及系统调用是如何实现的

我读过关于fastcall的文章,它将参数传递给系统调用,并将其传递给6个diffrenet寄存器

我还读到,当我需要传递超过6个寄存器时,我确实需要传递一个包含这些参数的结构


有人能告诉我怎么做吗?我真的没有找到任何信息。

您可能没有传递很多参数;您定义了一个
struct
,并通过几个(不超过4个)其他参数传递指向该
struct
的指针。看到或作为一个例子;内核必须限制系统调用参数的数量(因为它们是通过寄存器传递的,…)@Basile Starynkevitch我非常同意你的看法。这都是理论上的。前六个参数分别为%rdi、%rsi、%rdx、%rcx、%r8和%r9。任何更多的,它们都将在堆栈上传递。@SamiLaine我使用32位寄存器。。我了解到,如果我需要传递6个以上的参数,我应该传递一个指向包含参数的结构的指针参见: