C was defined in the 1970s, for PDP-11 which had 16 bit registers, no cache and a flat memory. Ever since, C has been mangled to adopt ever more complex architectures. It's like blaming a petrol car for not plugging into a Tesla Supercharger. Different era, different technology.
The question of ABI's is misguided. The interface to the OS syscalls is typically defined in terms of registers and calling convention. The ABI that C programmers reference in the OS ABI header files are a layer that transforms from C semantics to the OS syscall conventions. Language implementations could come with their implementation of a libc equivalent, one for every platform the language is expected to run on.
8 comments
[ 3.1 ms ] story [ 23.8 ms ] threadThe question of ABI's is misguided. The interface to the OS syscalls is typically defined in terms of registers and calling convention. The ABI that C programmers reference in the OS ABI header files are a layer that transforms from C semantics to the OS syscall conventions. Language implementations could come with their implementation of a libc equivalent, one for every platform the language is expected to run on.
By the way, it might be pronounced as 'per say', but it's two Latin words and spelt 'per se' - translatable as 'by itself' or 'in its own right'.