I was working on memorizing the order of the Linux system calls so I could more easily identify this. And, then I found this paper here, and it says,
To make a system call in 32-bit Linux, place the system call number in
eax, then its arguments, in order, in
ebp, then invoke int 0x80.
To make a system call in 64-bit Linux, place the system call number in
rax, then its arguments, in order, in
r9, then invoke syscall.
How come the order gets so mutilated between 64 bit and 32 bit? I know this question may be historical rather than technical.
This is totally decided by the kernel, right? Are there technical reasons to favor the newer convention?