Armv8 的 Linux 系统调用约定

KAM*_*KAM 7 system-calls armv8

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

Gui*_*rmo 5

使用该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
Run Code Online (Sandbox Code Playgroud)

论据:

arch/ABI      arg1  arg2  arg3  arg4  arg5  arg6  arg7
arm64         x0    x1    x2    x3    x4    x5    -
Run Code Online (Sandbox Code Playgroud)