Sé que la interfaz de llamada del sistema se implementa en un nivel bajo y, por lo tanto, depende de la arquitectura / plataforma, no del código "genérico".
Sin embargo, no puedo ver claramente la razón por la cual las llamadas al sistema en núcleos Linux x86 de 32 bits tienen números que no se mantienen iguales en la arquitectura similar Linux 64 bits x86_64. ¿Cuál es la motivación / razón detrás de esta decisión?
Mi primera suposición ha sido que una razón de fondo ha sido mantener las aplicaciones de 32 bits ejecutables en un sistema x86_64, de modo que a través de un desplazamiento razonable al número de llamada del sistema, el sistema sabría que el espacio de usuario es de 32 bits o 64 bits respectivamente. Sin embargo, este no es el caso. Al menos me parece que read () siendo el número de llamada del sistema 0 en x86_64 no puede alinearse con este pensamiento.
Otra suposición ha sido que cambiar los números de llamada del sistema podría tener un fondo de seguridad / endurecimiento, algo que no pude confirmar.
Al ignorar los desafíos de la implementación de las partes del código dependientes de la arquitectura, todavía me pregunto cómo cambiar los números de llamada del sistema , cuando parece que no es necesario (ya que incluso un registro de 16 bits almacenaría en gran medida más que los ~ 346 números actuales para representar a todos llamadas), ayudaría a lograr cualquier cosa, que no sea romper la compatibilidad (aunque el uso de las llamadas del sistema a través de una biblioteca, libc, lo mitiga).