【发布时间】:2018-01-26 07:50:40
【问题描述】:
有谁知道我在哪里可以找到 ArmV8 中 Linux 系统调用的约定? 必须传入什么寄存器参数,返回值存放在哪里。
【问题讨论】:
标签: system-calls armv8
有谁知道我在哪里可以找到 ArmV8 中 Linux 系统调用的约定? 必须传入什么寄存器参数,返回值存放在哪里。
【问题讨论】:
标签: system-calls armv8
使用svc #0 指令发出系统调用。
系统调用号通过寄存器X8传递,返回值存储在X0中。
这是一篇关于 ARMv8 系统调用的有趣文章的链接:Decoding Syscalls in ARM64
这是一个指向Procedure Call Standard for the ARM 64-bit Architecture (AArch64) 的链接,它可以为您提供有关 ARMv8 调用约定的更多信息。
您还可以从一些运行 Linux 的 ARM 机器在终端上运行 man syscall 获取该信息。
这是来自man syscall的信息摘要:
arch/ABI instruction syscall # retval
arm64 svc #0 x8 x0
参数:
arch/ABI arg1 arg2 arg3 arg4 arg5 arg6 arg7
arm64 x0 x1 x2 x3 x4 x5 -
【讨论】: