Por que o GCC usa a sintaxe da AT&T por padrão?

9

Acho que o título diz tudo :)

Existe algum motivo prático específico (acho que é principalmente histórico, mas não consigo encontrá-lo sozinho) por que o GCC usa a sintaxe AT & T / GAS?

Nota: Eu sei que isso é apenas o padrão e você pode trocá-lo

Nota 2: Eu pessoalmente acho a "sintaxe Intel" muito mais legível, por isso me surpreende.

Vyktor
fonte
3
A resposta provavelmente é desconhecida, a menos que você procure a pessoa que adicionou essa funcionalidade e perguntou 'por que'.
11
@ MichaelT Estou ciente dessa possibilidade, mas ainda acho esse tópico bastante interessante ... Talvez alguém tenha visto alguma citação ou algo assim.
Vyktor
@Vyktor perguntas como esta são , por vezes, sem resposta, mas eu ainda encontrar a história de ciência da computação para ser interessante, mesmo se na zona cinzenta de " on-topic "
@ Snowman concordou, mas se me ocorresse fazer o que o GlenH7 fazia (percorrer a história do gcc em vez de pesquisar no google why gcc uses at&t), não faria essa pergunta.
Vyktor

Respostas:

13

O GCC usa a sintaxe da AT&T por padrão, porque foi originalmente escrito em um sistema que usava o AT&T System V (agora conhecido como UNIX) ou tinha uma sintaxe que se parecia muito com o System V.

Da Wikipedia no GCC

Em um esforço para inicializar o sistema operacional GNU, Richard Stallman perguntou a Andrew S. Tanenbaum, autor do Amsterdam Compiler Kit (também conhecido como Free University Compiler Kit) se ele poderia usar esse software para o GNU. Quando Tanenbaum lhe disse que, embora a Universidade Livre estivesse livre, o compilador não estava, Stallman decidiu escrever o seu. O plano inicial de Stallman era reescrever um compilador existente do Lawrence Livermore Laboratory de Pastel para C com alguma ajuda de Len Tower e outros. Stallman escreveu um novo front end C para o compilador Livermore, mas depois percebeu que requeria megabytes de espaço na pilha, uma impossibilidade em um sistema 68000 Unix com apenas 64 K e concluiu que teria que escrever um novo compilador do zero. Nenhum código do compilador Pastel acabou no GCC, embora Stallman tenha usado o front end C que ele havia escrito.

Observe a seguinte parte:

Stallman escreveu um novo front end C para o compilador Livermore, mas depois percebeu que exigia megabytes de espaço de pilha, uma impossibilidade em um sistema Unix 68000 com apenas 64K ...

Dado isso GCC was first released March 22, 1987* e System V Release 3 was released in 1986** , é altamente provável que o GCC tenha sido escrito no SVR2 ou no SVR3.


A citação da Wikipedia deixa claro que Stallman estava trabalhando no equipamento dos Laboratórios Lawrence Livermore, que era baseado no Unix e, portanto, no Sistema V. Portanto, poderíamos parar por aí e dizer apenas "era nisso que ele precisava trabalhar". Mas também é interessante examinar os sistemas MS-DOS / PC-DOS disponíveis naquele momento. De acordo com esse cronograma , o provável candidato ao PC-DOS 1 seria a versão 3.2.

Os PCs (computadores pessoais) não eram tão amplamente utilizados em ambientes acadêmicos ou de pesquisa naquele momento, porque suas instalações de rede não eram tão boas quanto o que os sistemas baseados em Unix podiam oferecer. Havia também uma preferência histórica por ambientes do tipo servidor / terminal. Os sistemas de servidor / terminal estavam disponíveis antes da existência de PCs e geralmente forneciam muito mais poder de processamento e outros recursos do que o que um PC poderia oferecer de maneira acessível.

Portanto, embora Stallman pudesse ter desenvolvido o GCC em um PC, ele provavelmente não desejaria, pois seu trabalho principal teria sido nos sistemas Unix.

E, como observado em um comentário , havia uma diferença arquitetônica subjacente entre as CPUs que alimentam sistemas Unix e PCs.

Junte todas essas peças e fica bem claro por que Stallman escolheu a sintaxe da AT&T sobre a Intel ao desenvolver o GCC.

1 Observe que é mais fácil dizer que o MS-DOS foi chamado PC-DOS antes da versão 3.31. Dito isto, há muito na história do desenvolvimento do DOS que está fora do escopo desta questão.

Comunidade
fonte
Eu não entendo como eu perdi essa "A sintaxe da Intel é dominante no mundo do MS-DOS e do Windows, e a sintaxe da AT&T é dominante no mundo do Unix, desde que o Unix foi criado no AT&T Bell Labs. " tão direto.
Vyktor
O que esta resposta não aborda, no entanto, é por que o GAS usa a sintaxe "nativa" para muitas outras arquiteturas de CPU. As CPUs x86 me parecem estar entre as poucas para as quais ele realmente usa a sintaxe da AT&T.
Dolda2000
"... havia uma diferença arquitetônica subjacente entre as CPUs que alimentavam os sistemas Unix e os PCs". Hã? As CPUs eram as mesmas. A arquitetura do conjunto de instruções era a mesma. A sintaxe da AT&T sempre foi uma notação alternativa para a mesma arquitetura subjacente. Direita?
Maxpm
11
@Maxpm - As CPUs não eram as mesmas, e é aqui que as arquiteturas endian grandes versus pequenas são importantes.