Почему GCC использует синтаксис AT & T по умолчанию?


9

Я думаю, что название говорит обо всем :)

Есть ли какая-то конкретная практическая причина (я полагаю, это в основном исторически, но я не могу найти ее самостоятельно), почему GCC использует синтаксис AT & T / GAS?

Примечание: я знаю, что это просто по умолчанию, и вы можете переключить его

Примечание 2: лично я нахожу «синтаксис Intel» гораздо более читабельным, поэтому меня это удивляет.


3
Ответ, скорее всего, неизвестен, если вы не выследите человека, который добавил эту функциональность и не спросил «почему».

1
@MichaelT Я знаю об этой возможности, но все же нахожу эту довольно интересную тему ... Может быть, кто-то видел какую-то цитату или около того.
Виктор

Такие вопросы @Vyktor иногда остаются без ответа, но я по-прежнему считаю интересной историю информатики, даже если она находится в серой области « по теме »

@Snowman согласился, но если бы мне пришло в голову сделать то, что сделал GlenH7 (просмотрите историю gcc вместо поиска в Google why gcc uses at&t), я бы не стал задавать этот вопрос.
Виктор

Ответы:


13

GCC использует синтаксис AT & T по умолчанию, потому что он изначально был написан в системе, которая использовала AT & T System V (теперь известную как UNIX) или имела синтаксис, очень похожий на System V.

Из Википедии на GCC

Стремясь запустить операционную систему GNU, Ричард Столлман спросил Эндрю С. Таненбаума, автора Амстердамского набора компиляторов (также известного как набор компиляторов свободного университета), может ли он использовать это программное обеспечение для GNU. Когда Таненбаум сказал ему, что, хотя Свободный университет свободен, а компилятор - нет, Столлман решил написать свой собственный. Первоначальный план Столлмана состоял в том, чтобы переписать существующий компилятор из Ливерморской лаборатории Лоуренса из Pastel в C с некоторой помощью от Len Tower и других. Столлман написал новый C-интерфейс для компилятора Livermore, но затем понял, что для этого требуется мегабайт стекового пространства, что невозможно в 68000 Unix-системах с 64K, и решил, что ему придется писать новый компилятор с нуля. Ни один из кода компилятора Pastel не попал в GCC, хотя Столлман действительно использовал созданный им C-интерфейс.

Обратите внимание на следующую часть:

Столлман написал новый C-интерфейс для компилятора Livermore, но затем понял, что для этого требуется мегабайт стекового пространства, что невозможно в 68000 Unix-системах с 64K ...

Учитывая это GCC was first released March 22, 1987* и System V Release 3 was released in 1986** , весьма вероятно, что GCC был написан либо на SVR2, либо на SVR3.


Цитата из Википедии проясняет, что Столлман работал над оборудованием Lawrence Livermore Labs, которое было основано на Unix и, следовательно, System V. Поэтому мы могли бы остановиться на этом и просто сказать «это то, над чем он должен был работать». Но также интересно посмотреть на доступные системы MS-DOS / PC-DOS на тот момент. Согласно этой временной шкале вероятным кандидатом на ПК-DOS 1 была бы версия 3.2.

ПК (персональные компьютеры) не были так широко использованы в академических или исследовательских целях на тот момент, потому что их сетевые средства были не так хороши, как те, что могли бы обеспечить системы на основе Unix. Было также историческое предпочтение для сред типа сервер / терминал. Серверные / терминальные системы были доступны до появления ПК и, как правило, обеспечивали гораздо большую вычислительную мощность и другие ресурсы, чем те, которые ПК мог себе позволить.

Поэтому, хотя Столлман мог бы разработать GCC на ПК, он, вероятно, не захотел бы этого, поскольку его основная работа была бы в системах Unix.

И, как отмечалось в комментарии , между процессорами, работающими на Unix-системах и ПК , было принципиальное архитектурное различие .

Соберите все эти части вместе, и станет ясно, почему Столлман выбрал синтаксис AT & T вместо Intel при разработке GCC.

1 Обратите внимание, что проще всего сказать, что MS-DOS назывался PC-DOS до версии 3.31. Тем не менее, в истории разработки DOS есть многое, что выходит за рамки этого вопроса.


Я не понимаю, как я пропустил это: « Синтаксис Intel доминирует в мире MS-DOS и Windows, а синтаксис AT & T является доминирующим в мире Unix, так как Unix был создан в AT & T Bell Labs». Вместе с вашим ответом это просто кажется так прямо вперед.
Виктор

Однако этот ответ не затрагивает, почему GAS использует «собственный» синтаксис для очень многих других архитектур ЦП. Процессоры x86, по-моему, являются одними из немногих, для которых он фактически использует синтаксис AT & T.
Dolda2000

«... было принципиальное архитектурное различие между процессорами, работающими на Unix-системах и ПК». А? Процессоры были одинаковыми. Архитектура набора команд была такой же. Синтаксис AT & T всегда был альтернативной нотацией для той же базовой архитектуры. Правильно?
Maxpm

1
@Maxpm - Процессоры не были одинаковыми, и именно здесь важны архитектуры с прямым и прямым порядком байтов.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.