gpt4 book ai didi

linux - 是否可以将超过七个参数传递给 arm linux 中的系统调用?

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:03 25 4
gpt4 key购买 nike

在arm linux(EABI)中,系统调用号在r7中传递,参数可以在r0-r6寄存器中传递

下表(syscall(2))显示了用于传递系统调用的寄存器 参数。

   arch/ABI      arg1  arg2  arg3  arg4  arg5  arg6  arg7  Notes
──────────────────────────────────────────────────────────────
alpha a0 a1 a2 a3 a4 a5 -
arc r0 r1 r2 r3 r4 r5 -
arm/OABI a1 a2 a3 a4 v1 v2 v3
arm/EABI r0 r1 r2 r3 r4 r5 r6

我只是好奇七是不是可以在系统调用中传递给 arm linux 的最大参数数量。是否可以传递更多参数?

最佳答案

对于传递超过 3-4 个参数的系统调用通常是一个加号。在向系统调用传递参数时使用寄存器的原因是,通常在切换到内核模式时,您会更改堆栈,因此您必须使用效率低下的方式访问存储在用户堆栈中的参数。当你需要传递超过 7 个寄存器的信息时,你通常会传递一个指向包含所有信息的结构的指针(可能你已经在你使用的系统中的一些系统调用中看到了这一点)

对于正常的过程调用,堆栈始终存在,因此参数的最大数量不是问题。

关于linux - 是否可以将超过七个参数传递给 arm linux 中的系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53903726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com