Чому GCC використовує синтаксис AT&T за замовчуванням?


9

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

Чи є якась конкретна практична причина (напевно, це здебільшого історично, але я не в змозі знайти її самостійно) чому GCC використовує синтаксис AT & T / GAS?

Примітка. Я знаю, що це просто за замовчуванням, і ви можете переключити його

Примітка 2: Я особисто вважаю "синтаксис Intel" набагато легшим для читання, тому це мене переглядає.


3
Відповідь, ймовірно, невідома, якщо ви не будете шукати людину, яка додала цю функціональність і не запитала "чому".

1
@MichaelT Я знаю про таку можливість, але все-таки я вважаю цю цікаву тему ... Можливо, хтось побачив якусь цитату чи так.
Виктор

@Vyktor подібні питання іноді невідчутні , але я все ще вважаю історію інформатики цікавою, навіть якщо в сірій зоні " на тему "

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

Відповіді:


13

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

З Вікіпедії на GCC

Прагнучи завантажувати операційну систему GNU, Річард Сталлман запитав Ендрю С. Таненбаума, автора набору для компіляторів у Амстердамі (також відомого як Free Compiler Kit), чи зможе він використовувати це програмне забезпечення для GNU. Коли Таненбаум сказав йому, що поки Вільний університет був вільним, упорядником цього не було, Стеллман вирішив написати своє. Первісний план Стеллмана полягав у тому, щоб переписати існуючий компілятор із Лаборантії Лоуренса Лівермора з Пастеля на С за допомогою допомоги Лен Тауер та інших. Стейлман написав нову передню частину для компілятора Livermore, але потім зрозумів, що для цього потрібні мегабайти простору стеку, неможливість в системі 68000 Unix лише 64 Кб, і зробив висновок, що йому доведеться написати новий компілятор з нуля. Жоден з кодів компілятора 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.


Цитата Вікіпедії дає зрозуміти, що Стеллман працював над обладнанням лабораторій Лоуренса Лівермора, яке базувалося на Unix і, отже, Система V. Тож ми могли там зупинитися і просто сказати, "над цим йому довелося працювати". Але також цікаво подивитися на доступні системи MS-DOS / PC-DOS на той момент. Відповідно до цієї часової шкали , ймовірним кандидатом для PC-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.