← Back to context

Comment by caim

2 days ago

Swift has its own ABI and calling convention, so that makes sense that Apple adapted to it.

The system v abi doesn't say anything about syscall.

Windows x86_64 abi is the same abi for x86, for this reason, you can only pass arguments in 4 registers ( while unix uses 6 ) because x86 only had 8 registers.

I think people have expectations that are misaligned with history and reality about this, to be honest. We can't expect all OS to do things in the same way.

C was created to rewrite the UNIX system, and POSIX compliance is followed by all successors, with minimal differences.

When it became clear that "Itanium" was a failure, Microsoft couldn't just pull an ABI out of the box and break all applications, so they just reused the same x86 ABI.