首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统调用:

系统调用:
EN

Stack Overflow用户
提问于 2014-08-20 07:08:54
回答 1查看 1.9K关注 0票数 2

在一个系统调用中可以传递多少参数?我签入了内核文件/asm/unistd.h,没有看到包含4个以上参数的系统调用。

EN

回答 1

Stack Overflow用户

发布于 2014-08-20 07:50:40

这取决于您使用的架构。对于i386,系统调用号旁边有最多6个参数。

syscall(2)中,您传递系统调用号的寄存器通过:

代码语言:javascript
复制
arch/ABI   instruction          syscall #   retval Notes
───────────────────────────────────────────────────────────────────
arm/OABI   swi NR               -           a1     NR is syscall #
arm/EABI   swi 0x0              r7          r0
blackfin   excpt 0x0            P0          R0
i386       int $0x80            eax         eax
ia64       break 0x100000       r15         r10/r8 bool error/
                                                  errno value
parisc     ble 0x100(%sr2, %r0) r20         r28
s390       svc 0                r1          r2     See below
s390x      svc 0                r1          r2     See below
sparc/32   t 0x10               g1          o0
sparc/64   t 0x6d               g1          o0
x86_64     syscall              rax         rax

论点:

代码语言:javascript
复制
arch/ABI   arg1   arg2   arg3   arg4   arg5   arg6   arg7
──────────────────────────────────────────────────────────
arm/OABI   a1     a2     a3     a4     v1     v2     v3
arm/EABI   r0     r1     r2     r3     r4     r5     r6
blackfin   R0     R1     R2     R3     R4     R5     -
i386       ebx    ecx    edx    esi    edi    ebp    -
ia64       out0   out1   out2   out3   out4   out5   -
parisc     r26    r25    r24    r23    r22    r21    -
s390       r2     r3     r4     r5     r6     r7     -
s390x      r2     r3     r4     r5     r6     r7     -
sparc/32   o0     o1     o2     o3     o4     o5     -
sparc/64   o0     o1     o2     o3     o4     o5     -
x86_64     rdi    rsi    rdx    r10    r8     r9     -
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25398729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档