Calling conventions
Created Tuesday 09 July 2024
(Reference page, not a blog post.)
linux x86-64: https://en.wikipedia.org/wiki/X86_calling_conventions#System_V_AMD64_ABI
- rdi, rsi, rdx, rcx, r8, r9
- ret: rax
linux x86-64 syscall (`syscall`):
- rdi, rsi, rdx, r10, r8, r9
- id: rax
- ret: rax
linux arm64:
- x0, x1, x2, x3, x4, x5, x6, x7
- saved: x19-x28
linux arm64 syscall (`svc #0`):
- x0, x1, x2, x3, x4, x5
- id: x8
- ret: x0
riscv: https://riscv.org/wp-content/uploads/2015/01/riscv-calling.pdf
- x10 (a0), x11 (a1), x12 (a2), x13 (a3), x14 (a4), x15 (a5), x16 (a6), x17 (a7)
- ret: x10 (a0)
- saved: x18-27 (s2-11)
linux riscv syscall (`ecall`):
- x10 (a0), x11 (a1), x12 (a2), x13 (a3), x14 (a4), x15 (a5)
- id: x17 (a7)
- ret: x10 (a0)