Eu sei que a interface de chamada do sistema é implementada em um nível baixo e, portanto, depende da arquitetura / plataforma, não do código "genérico".
No entanto, não consigo ver claramente o motivo pelo qual as chamadas do sistema nos kernels x86 de 32 bits do Linux têm números que não são mantidos iguais na arquitetura semelhante x86_64 do Linux de 64 bits? Qual é a motivação / razão por trás dessa decisão?
Meu primeiro palpite foi que um motivo de segundo plano foi manter aplicativos de 32 bits executáveis em um sistema x86_64, para que, através de um deslocamento razoável para o número de chamada do sistema, o sistema saiba que o espaço do usuário é de 32 ou 64 bits. respectivamente. No entanto, este não é o caso. Pelo menos parece-me que read () sendo o número de chamada do sistema 0 em x86_64 não pode ser alinhado com esse pensamento.
Outro palpite é que a alteração dos números de chamada do sistema pode ter um histórico de segurança / proteção, algo que não fui capaz de confirmar.
Ignorando os desafios da implementação das partes de código dependentes da arquitetura, ainda me pergunto como alterar os números de chamada do sistema , quando parece não haver necessidade (pois mesmo um registro de 16 bits armazenaria muito mais que os atualmente ~ 346 números para representar todos os chamadas), ajudaria a conseguir qualquer coisa, além de quebrar a compatibilidade (embora o uso das chamadas do sistema por meio de uma biblioteca, a libc a atenue).