Согласно справочной странице syscall в вызове архитектуры соглашения, в нем указываются различные порядки регистров для аргументов системного вызова каждой архитектуры. Все они имеют какой-то логический упорядоченный смысл, кроме x86_64. Например, arm64 использует x0, x1, x2, x3, x4, затем x5 по порядку, что кажется логичным и в числовом порядке. Но для x86_64 порядок следующий: rdi, rsi, rdx, r10, r8, затем r9. Мне это не кажется логичным, что и вызывает у меня замешательство. Почему x86_64 такой?
Спасибо!