4

有谁知道我在哪里可以找到 ArmV8 中 Linux 系统调用的约定?必须传入什么寄存器参数以及返回值存储在哪里。

4

1 回答 1

3

svc #0使用该指令发出系统调用。系统调用号通过寄存器传递,X8返回值存储在X0.

这是一篇关于 ARMv8 系统调用的有趣文章的链接:Decoding Syscalls in ARM64

这是ARM 64 位体系结构 (AArch64) 的过程调用标准的链接,它可以为您提供有关 ARMv8 调用约定的更多信息。

您还可以man syscall从一些运行 Linux 的 ARM 机器上获取在终端上运行的信息。

这是来自以下信息的摘要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    -
于 2017-08-29T14:58:26.533 回答