Pourquoi GCC utilise-t-il la syntaxe AT&T par défaut?

9

Je pense que le titre dit tout :)

Y a-t-il une raison pratique particulière (je suppose que c'est surtout historique, mais je ne peux pas le trouver par moi-même) pourquoi GCC utilise la syntaxe AT & T / GAS?

Remarque: je sais que ce n'est que par défaut et vous pouvez le changer

Note 2: Personnellement, je trouve la "syntaxe Intel" beaucoup plus lisible, c'est pourquoi elle me surprend.

Vyktor
la source
3
La réponse est probablement inconnue à moins que vous ne traquiez la personne qui a ajouté cette fonctionnalité et que vous ayez demandé «pourquoi».
1
@MichaelT Je suis conscient de cette possibilité, mais je trouve toujours ce sujet très intéressant ... Peut-être que quelqu'un a vu une citation ou quelque chose comme ça.
Vyktor
Les questions @Vyktor comme celle-ci sont parfois sans réponse, mais je trouve toujours que l'histoire de l'informatique est intéressante même si elle est dans la zone grise du " sur le sujet "
@Snowman a accepté, mais s'il m'est venu à l'esprit de faire ce que GlenH7 a fait (parcourir l'histoire de gcc au lieu de googler why gcc uses at&t), je ne poserais pas cette question.
Vyktor

Réponses:

13

GCC utilise la syntaxe AT&T par défaut, car il a été écrit à l'origine sur un système qui utilisait AT&T System V (maintenant connu sous le nom UNIX) ou dont la syntaxe ressemblait étroitement à System V.

De Wikipedia sur GCC

Dans un effort pour amorcer le système d'exploitation GNU, Richard Stallman a demandé à Andrew S. Tanenbaum, l'auteur du Amsterdam Compiler Kit (également connu sous le nom de Free University Compiler Kit) s'il pouvait utiliser ce logiciel pour GNU. Lorsque Tanenbaum lui a dit que même si l'Université libre était gratuite, le compilateur ne l'était pas, Stallman a décidé d'écrire le sien. Le plan initial de Stallman était de réécrire un compilateur existant du Lawrence Livermore Laboratory de Pastel à C avec l'aide de Len Tower et d'autres. Stallman a écrit un nouveau frontal C pour le compilateur Livermore, mais s'est ensuite rendu compte qu'il nécessitait des mégaoctets d'espace de pile, une impossibilité sur un système 68000 Unix avec seulement 64 Ko, et a conclu qu'il devrait écrire un nouveau compilateur à partir de zéro. Aucun du code du compilateur Pastel ne s'est retrouvé dans GCC, bien que Stallman ait utilisé le frontal C qu'il avait écrit.

Notez la partie suivante:

Stallman a écrit un nouveau frontal C pour le compilateur Livermore, mais s'est ensuite rendu compte qu'il nécessitait des mégaoctets d'espace de pile, une impossibilité sur un système Unix 68000 avec seulement 64 Ko ...

Étant donné que GCC was first released March 22, 1987* et que System V Release 3 was released in 1986** , il est très probable que GCC ait été écrit sur SVR2 ou SVR3.


La citation de Wikipédia indique clairement que Stallman travaillait sur l'équipement des Lawrence Livermore Labs, qui était basé sur Unix et donc sur le Système V. Nous pourrions donc nous arrêter là et dire simplement "c'est sur quoi il devait travailler". Mais il est également intéressant de regarder les systèmes MS-DOS / PC-DOS disponibles à ce moment-là. Selon ce calendrier , le candidat probable pour PC-DOS 1 aurait été la version 3.2.

Les PC (ordinateurs personnels) n'étaient pas aussi largement utilisés dans les milieux universitaires ou de recherche à ce moment-là parce que leurs installations de mise en réseau n'étaient pas aussi bonnes que ce que les systèmes basés sur Unix pouvaient fournir. Il y avait également une préférence historique pour les environnements de type serveur / terminal. Les systèmes de serveur / terminal étaient disponibles avant l'existence des PC et fournissaient généralement une puissance de traitement et d'autres ressources beaucoup plus importantes que ce qu'un PC pouvait fournir à un prix abordable.

Ainsi, alors que Stallman aurait pu développer GCC sur un PC, il n'aurait probablement pas voulu le faire puisque son travail principal aurait été sur les systèmes Unix.

Et comme indiqué dans un commentaire , il y avait une différence architecturale sous-jacente entre les processeurs alimentant les systèmes Unix et les PC.

Réunissez toutes ces pièces et il est assez clair pourquoi Stallman a choisi la syntaxe AT&T plutôt qu'Intel lors du développement de GCC.

1 Notez qu'il est plus facile de dire que MS-DOS s'appelait PC-DOS avant la version 3.31. Cela étant dit, il y a beaucoup dans l'histoire du développement DOS qui sort du cadre de cette question.

Communauté
la source
Je ne comprends pas comment j'ai raté cela "La syntaxe Intel est dominante dans le monde MS-DOS et Windows, et la syntaxe AT&T est dominante dans le monde Unix, car Unix a été créé chez AT&T Bell Labs. " Joint à votre réponse, il semble juste si simple.
Vyktor
Cependant, ce que cette réponse ne touche pas, c'est pourquoi GAS utilise la syntaxe "native" pour tant d'autres architectures CPU. Les processeurs x86 me semblent être parmi les rares pour lesquels il utilise réellement la syntaxe AT&T.
Dolda2000
"... il y avait une différence architecturale sous-jacente entre les processeurs alimentant les systèmes Unix et les PC." Hein? Les CPU étaient les mêmes. L'architecture du jeu d'instructions était la même. La syntaxe AT&T a toujours été une notation alternative pour la même architecture sous-jacente. Droite?
Maxpm
1
@Maxpm - Les CPU n'étaient pas les mêmes, et c'est là que les architectures grandes vs petites endiennes comptent.