¿Por qué GCC usa la sintaxis de AT&T de manera predeterminada?

9

Creo que el título lo dice todo :)

¿Hay alguna razón práctica particular (supongo que es principalmente histórica, pero no puedo encontrarla por mi cuenta) por qué GCC usa la sintaxis AT & T / GAS?

Nota: Sé que esto es solo predeterminado y puedes cambiarlo

Nota 2: Personalmente encuentro que la "sintaxis de Intel" es mucho más legible, por eso me sorprende.

Vyktor
fuente
3
La respuesta es probablemente incognoscible a menos que persiga a la persona que agregó esa funcionalidad y le preguntó "por qué".
1
@MichaelT Soy consciente de esa posibilidad, pero todavía encuentro ese tema bastante interesante ... Tal vez alguien haya visto alguna cita más o menos.
Vyktor
Las preguntas de @Vyktor como esta a veces no tienen respuesta, pero todavía encuentro interesante la historia de la informática, incluso en el área gris de " sobre el tema "
@Snowman estuvo de acuerdo, pero si se me ocurriera hacer lo que GlenH7 hizo (revisar el historial de gcc en lugar de buscar en Google why gcc uses at&t) no haría esa pregunta.
Vyktor

Respuestas:

13

GCC usa la sintaxis de AT&T de manera predeterminada porque se escribió originalmente en un sistema que usaba AT&T System V (ahora conocido como UNIX) o tenía una sintaxis que se parecía mucho al Sistema V.

De Wikipedia en GCC

En un esfuerzo por arrancar el sistema operativo GNU, Richard Stallman le preguntó a Andrew S. Tanenbaum, autor del Kit Compilador de Amsterdam (también conocido como Kit Compilador de la Universidad Libre) si podía usar ese software para GNU. Cuando Tanenbaum le dijo que, si bien la Universidad Libre era gratuita, el compilador no, Stallman decidió escribir la suya. El plan inicial de Stallman era reescribir un compilador existente del Laboratorio Lawrence Livermore de Pastel a C con la ayuda de Len Tower y otros. Stallman escribió una nueva interfaz C para el compilador Livermore, pero luego se dio cuenta de que requería megabytes de espacio de pila, una imposibilidad en un sistema Unix 68000 con solo 64K, y concluyó que tendría que escribir un nuevo compilador desde cero. Ninguno de los códigos del compilador de Pastel terminó en GCC, aunque Stallman usó la interfaz C que había escrito.

Tenga en cuenta la siguiente parte:

Stallman escribió una nueva interfaz C para el compilador Livermore, pero luego se dio cuenta de que requería megabytes de espacio de pila, una imposibilidad en un sistema Unix 68000 con solo 64K ...

Dado que GCC was first released March 22, 1987* y eso System V Release 3 was released in 1986** , es muy probable que GCC se haya escrito en SVR2 o SVR3.


La cita de Wikipedia deja en claro que Stallman estaba trabajando en el equipo de los Laboratorios Lawrence Livermore, que estaba basado en Unix y, por lo tanto, en el Sistema V. Para que pudiéramos parar allí y simplemente decir "en eso tenía que trabajar". Pero también es interesante observar los sistemas MS-DOS / PC-DOS disponibles en ese momento. Según esta línea de tiempo , el posible candidato para PC-DOS 1 habría sido la versión 3.2.

Las PC (computadoras personales) no se usaban tanto en entornos académicos o de investigación en ese momento porque sus instalaciones de red no eran tan buenas como las que podían proporcionar los sistemas basados ​​en Unix. También hubo una preferencia histórica por los entornos de tipo servidor / terminal. Los sistemas de servidor / terminal habían estado disponibles antes de la existencia de PC y, en general, proporcionaban una potencia de procesamiento y otros recursos mucho mayores que los que una PC podía proporcionar de manera asequible.

Entonces, aunque Stallman podría haber desarrollado GCC en una PC, probablemente no hubiera querido ya que su trabajo principal habría sido en sistemas Unix.

Y como se señaló en un comentario , había una diferencia arquitectónica subyacente entre las CPU que alimentan los sistemas Unix y las PC.

Junte todas esas piezas y quede bastante claro por qué Stallman eligió la sintaxis de AT&T sobre Intel cuando desarrolló GCC.

1 Tenga en cuenta que es más fácil decir que MS-DOS se llamaba PC-DOS antes de la versión 3.31. Dicho esto, hay mucho en la historia del desarrollo de DOS que está fuera del alcance de esta pregunta.

Comunidad
fuente
No entiendo cómo me perdí esta " sintaxis de Intel es dominante en el mundo de MS-DOS y Windows, y la sintaxis de AT&T es dominante en el mundo de Unix, ya que Unix se creó en AT&T Bell Labs " . tan sencillo
Vyktor
Sin embargo, lo que esta respuesta no menciona es por qué GAS usa la sintaxis "nativa" para tantas otras arquitecturas de CPU. Las CPU x86 me parecen estar entre las pocas para las que realmente usa la sintaxis de AT&T.
Dolda2000
"... había una diferencia arquitectónica subyacente entre las CPU que alimentan los sistemas Unix y las PC". ¿Eh? Las CPU eran iguales. La arquitectura del conjunto de instrucciones era la misma. La sintaxis de AT&T siempre ha sido una notación alternativa para la misma arquitectura subyacente. ¿Derecha?
Maxpm
1
@Maxpm: las CPU no eran las mismas, y aquí es donde importan las arquitecturas endian grandes y pequeñas.