Вихідні тексти компіляторів basic, c, c, pascal

Багато наведені нижче компілятори написані ентузіастами для навчальних цілей або заради розваги. Внаслідок різних причин (головним чином через лінь і брак часу), переважна більшість цих проектів було кинуто на півдорозі, а деякі навіть в декількох метрах від старту. Через це, багатьом компайлерам не вистачає функціональності і здібностей. Але для навчальних цілей, думаю, згодяться.

Про тонкощі. Так як багато розробники вирішили проблему вихідного формату досить просто - не розбираючись з форматом об'єктних і виконуваних файлів, замінили його на простий асемблерний текстовий лістинг, - то для подальшого удобоваренія потрібно ще й асемблер і, можливо, линкер. Але на мій погляд, це більш раціональний підхід.

Майже у всіх даних архівах є вже скомпільовані версії програм, якщо не зазначено інше.

Невеликий іграшковий компілятор з QuickBasic'а в Nasm. Можливості програми поки що невеликі. Приклад додається. Чи не скомпільовано.

Мова исходника. bas (QuickBasic PDS v7.1)

Вихідний мова. asm (16-bit => Nasm => .com, mz .exe)

81kb) Basic compiler for MenuetOS (c) by Jarek Pelczar

Як видно з назви, це невеликий компайлер Бейсік. Взагалі-то він включений в дистрибутив альтернативної ОС Menuet. але нехай лежить і тут для надійності. Генерує 32 бітний код для захищеного режиму (тільки не DOS, а MenuetOS), хоча можна сфабрикувати і .com файл. І ще зауваження: при обчисленні математичного виразу видається дуже неоптимізований асемблерний код, зовсім як в "студентських" компіляторах (див. Нижче).

Мова исходника. c (GNU C)

Вихідний мова. asm (32 bit => Nasm, Fasm => .bin. com)

Остання (здається) версія дуже популярного транслятора з бейсікоподобного мови в асемблер. У комплекті IDE з Хелп розроблений третьою особою, асемблер (Arrowsoft), линкер і безліч прикладів. Як і Sphinx C--, Basm286 обчислює вирази зліва направо, без пріоритетів.

Мова исходника. bas (Power Basic 3.2)

Вихідний мова. asm (16 bit => Arrosoft asm => mz .exe. com)

Документація: англійською

Цей компайлер реалізує підмножина QuickBasic / RapidQ. Поки що Bxbasm вміє компілювати тільки консольні Win32 програми. Особливість: Bxbasm в вихідному асемблерному лістингу використовує багато внутрішні макроси Masm32 (такі як invoke. If-.else-.endif і ін.) Більш повну версію (разом з пакетом Masm32 - близько 2.5Мб) можна скачати з домашнього сайту.

Мова исходника. c (Lcc-Win32)

Вихідний мова. asm (32-bit => Masm32 => pe .exe)

Документація: англійською

Мова исходника. bas (QuickBasic v4.5 v7.1)

Вихідний мова. asm (32 bit => Nasm => WDosX .exe)

Документація: англійською

Створювався як альтернатива QuickBasic'у. Генерує дуже компактний асмовий лістинг і, відповідно, виконуваний файл виходить невеликим. На відміну від багатьох інших діалектів мови, обчислює вираз зліва направо, не звертаючи уваги на пріоритети (зовсім як Sphinx C--).

Мова исходника. bas (QuickBasic v4.5 v7.1)

Вихідний мова. asm (16-bit => Tasm, Masm => mz .exe. com)

Документація: англійською

Дуже цікава реалізація Бейсік-компілятора. Синтаксис мови дуже близький до QuickBasic'овскому. Підтримується: процедури / функції (відповідно глобальні / локальні змінні), цілі типи даних (масиви лише частково), майже всі умовні і циклічні конструкції. З мінусів: відсутні будь-які зовнішні бібліотеки, тобто не можна користуватися ключовими словами PRINT, DRAW і т. Д. Зате цей компілятор дотримується пріоритети при обчисленні виразів типу "n = (x * (20-b / a) -function1 (a * b, x * (zy), b)) "і генерує при цьому цілком оптимізований код (без цих ідіотських push'ов і pop'ов!) Вихідним форматом є простою асмовий лістинг.

Мова исходника. bas (MS QuickBasic PDS v7.1)

Вихідний мова. asm (16-bit => Tasm, Masm => mz .exe)

60kb) SBasic 2.0 (C) 1989-91 DMV Widuch GmbH Co.KG; Autor: Wolfgang Lorenz (ASCII- / LABEL-BASIC-Preprocessor: Peter Knappe)

Ви коли-небудь бачили компілятор, написаний на GW-Basic'е? Ні? Уява не включається? Ну так подивіться - це ж нічний кошмар сішного програміста. Вхідна мова компілятора майже повністю сумісний з GW-Basic'ом. Що цікаво, компілятор компілює сам себе. В архіві також вихідні невеликої IDE (теж на Бейсік).

Мова исходника. bas (à la GW-Basic)

Вихідний формат: mz .exe

Ще один іграшковий компілятор для мови, що нагадує Бейсік і Паскаль.

Мова исходника. bas (PowerBasic)

Вихідний мова. asm (16-bit => Nasm => mz .exe)

Мова исходника. bas (QuickBasic v4.5 v7.1)

Вихідний мова. asm (32 bit => Nasm => WDosX .exe, pe .exe)

Документація: англійською

Якоїсь зрозумілої документації до цієї програми немає, тому розібратися особливо не вдалося. Ясно тільки, що це Сі-подібний компілятор, і, що він може видавати асемблерний лістинг для Motorola 6809 і Intel 8086/386 (16 і 32 біт код). В архіві є кілька прикладів. До даного компілятору додаються ще асемблер as.zip (

26kb). Повні вихідні з компілювати бінарники для MS-DOS можна завантажити з домашнього сайту.

Мова исходника. c (GNU C)

Вихідний мова. asm (16, 32-bit => AS => mz, pe .exe)

Це різновид мови Сі, названа не менше коротко - Бі. Напевно через те, що до нормального Сі трохи не дотягує. Проте, виробляє 32-бітний код для екстендера WDosX.

Мова исходника. c (GNU C)

Вихідний мова. asm (32-bit => Nasm, Fasm => WDosX .exe)

Документація: англійською

Дуже мінімальний Сі-подібний компілятор, створений якимсь пакистанським програмістом в якості університетської роботи. Що видається код дуже неоптимізованими (пам'ятається, наші "студентські" компайлери мають цей же недолік). Кілька прикладів і докладний опис внутрішніх алгоритмів додаються. Невелике зауваження: для рекомпіляції підійде тільки MSVC ++ 6.0 (у всякому разі, під Watcom і Mingw Компільо геть відмовлялося).

Мова исходника. cpp (тільки MS Visual C ++ 6.0)

Вихідний мова. asm (16-bit => Tasm, Masm => mz .exe)

Документація: англійською

149kb) 68000 and i386 C Compiler v3.1 (c) by Christoph van Wuellen

Судячи з назви, може видавати асемблерний лістинг для процесорів 68000 (Motorola, здається) і i386 (32-бітний код). В архіві тільки вихідні, без бінарників. Здається, це все повинно їхати під SunOS. Коротше, я не розбирався. Чи не скомпільовано.

Мова исходника. c (ANSI C)

Вихідний мова. asm (GNU GAS assembler).

Документація: англійською

Це багатомовний настроюється компілятор, вхідна мова і генерацію коду для якого потрібно визначати за допомогою зовнішніх .def файлів. Можливості, проте, вкрай обмежені. Дана версія налаштована на Сі-подібна мова. Нещодавно проект був відроджений на базі Sourceforge.net, остання версія під номером 0.82 набагато більш функціональна. Документації, проте, вкрай мало.

Мова исходника. pas (Free Pascal)

Вихідний мова. asm (16-bit => Nasm => mz .exe)

Документація: англійською

Мова исходника. c (GNU C, Borland C)

Вихідний мова. asm (32-bit => Masm =>. exe)

Документація: англійською

74kb) Byte Small C V1.0 (c) одна тисяча дев'ятсот вісімдесят шість by Rick Grehan

Целочисленное підмножина Сі.

Мова исходника. c (ANSI C) здається, сам себе компілює.

Вихідний мова. asm (16 bit => Tasm => .com)

Документація: англійською

Мова исходника. c (GNU C)

Вихідний формат. asm (32-bit => Sasm => DJGPP .exe)

Документація: англійською

Клон Сі. Використовує частина бібліотеки Borland C.

Мова исходника. cpp (Borland C ++)

Вихідний мова. asm (16-bit => Tasm => mz .exe)

Документація: російською

Мова исходника. moo (MoonRock Basic Compiler, коротше, дивись вище.)

Вихідний мова. asm (16 bit => Tasm, Masm => .com)

Документація: англійською

133kb) Small C Compiler v2.2 (c) одна тисяча дев'ятсот вісімдесят дев'ять by James Hendrix

Ще один невеликий Сі-компілятор.

Мова исходника. c (компілює сам себе)

Вихідний мова. asm (16 bit => Tasm, Masm => .com, mz .exe)

Документація: англійською

Клон Sphinx C--, написаний на самому C--. Виробляє відразу pe .exe

Мова исходника. c-- (Sphinx C-v0.238)

Вихідний формат. pe exe

Документація: російською

Коли Пітер Селліка пішов на пенсію, він віддав народу вихідні свого незабутнього Sphinx C--. Тут версія 2.0, і, як думав Селліка, - остання. Ага. Фигушки. Таке добро мертвим вантажем довго не лежить. Як відомо, проект відродив Михайло Шекер. Хочете відчути різницю? Качайте файл, а потім швидко сюди. Про що це я? Ах да. Коротше, компілятор написаний на Сі, для нормальної рекомпіляції потрібно Сі мелкософтовскій. Версія десь шоста. Не менше. Вихідні тексти Workbench'a також включені в архів. Він на Паскалі, до речі. Для тих, хто не в курсі, повідомляю особливість: Sphinx обчислює вирази зліва направо, незважаючи на пріоритети.

Мова исходника. c (Microsoft C 6.0)

Вихідний формат. com. obj

Документація: англійською

Компілятор мови програмування, яким розуміли його за часів Вірта, - невеликий, ясний і здатний скомпілювати себе. Шкода, що прихильників старих ідей залишилося мало. Мова Context трохи схожий на модуль з деякими елементами Сі. У комплекті невеликий асемблер, написаний, природно, на Context'е, і документація російською мовою про побудову компіляторів. Оптимізатор в Context'е відсутня, але якість коду можна порівняти з ранніми версіями Turbo Pascal. Більш нова версія 1.2 з кількома прикладами: samples.zip (

Мова исходника. ctx (Компілює сам себе)

Вихідний мова. asm (16 bit => asm8086 => .com)

Документація: російською

Це версія Context'а, переписана заново для Win32. Внутрішній алгоритм компіляції дещо відрізняється від відповідного в досовської версії (було передбачено місце для оптимізатора, який, тим не менш, так і не був написаний).

Мова исходника. ctx (Компілює сам себе)

Вихідний мова. asm (32 bit => Tasm => pe .exe)

Цей архів я виловив з якогось японського сайту, причому через посилання з французького. Наскільки сильно Cabezon сумісний з Паскалём, я не перевіряв, але, судячи з прикладів, досить непогано. Вся документація на японському, причому навіть ієрогліфи побачити не вдасться - замість них буде якась Двосимвольні фігня типу Unicode :-) В архів включені також вихідні бібліотек.

Мова исходника. pas (Borland Pascal, напевно.)

Вихідний мова. asm (16 bit => Tasm, Masm => mz .exe)

Документація: на японському 8- /

Невеликий компілятор підвиду Паскаля. На відміну від багатьох подібних, ще й намагається оптимізувати код (не дуже, правда, успішно). Підправлений особисто мною, щоб Компільо без проблем в Free Pascal'e. Для написання більш-менш тямущих програм непридатний.

Мова исходника. pas (Borland Pascal, Free Pascal).

Вихідний мова. asm (16 bit => Tasm, Masm => mz .exe. com)

Паскаль-компілятор, інтегрований з IDE і дебаггера. Генеруються Win32 pe .exe вимагають файл ipsupport.dll (

27kb), який, природно, в комплекті. Екзешник виходить дуже маленьким, але код не оптимізований.

Мова исходника. pas (Delphi)

Вихідний формат: pe .exe

Документація: англійською

Невеликий компілятор паскалевідного мови. Створено в якості курсової роботи з дисципліни "Основи трансляції". Усередині також вихідні невеликого IDE і документація (стосовно побудови компіляторів) російською мовою.

Мова исходника. c (Borland C)

Вихідний формат. com

Документація: російською

Ще одна заслуговує на увагу спроба реалізації 32-бітного Паскаля. З плюсів можна відзначити підтримку чисел з плаваючою точкою, сумісність з Borland Pascal'ём як по синтаксису, так і по бібліотеках, оптимізацію коду під Пентіум, і можливість створювати виконувані файли для Dos32, Wdosx і Win32. З мінусів: судячи з усього, проект з невідомих причин загубився в мережі кілька років тому. В комлекті IDE, коротка документація і приклади.

Мова исходника. pas (Borland Pascal)

Вихідний мова. asm (32-bit => Nasm, Tasm, Pass32 => Dos32 .exe, Wdosx .exe, pe .exe)

Документація: англійською

Ніякого відношення до PL / 1 не має, скоріше, ця мова схожий на Паскаль. Дивним і старим (на мій погляд) рішенням є те, що сам компілятор розділений на кілька частин (файлів): сканер -> парсер -> псевдокод -> кодер в асемблер.

Мова исходника. c (Borland C 3.1 - 4.5, GNU C 2.7.1)

Вихідний мова. asm (16 bit => Tasm => mz .exe)

Цей Паскаль-компілятор виробляє виконувані файли для OS2.

Мова исходника. pas (Borland Pascal)

Вихідний формат. asm (32-bit => Masm 6.0 + Link386 => lx .exe)

303kb) S Compiler (c) by Henry Lesourd

Компілятор реалізує гібридний паскально-бейсіковий мову і виробляє власний формат виконуваних файлів, суміш байткода і асемблера. Однією з можливостей є компіляція в .com файл.

Мова исходника. pas (Borland Pascal)

Вихідний формат. pak. com

16kb) Pascal-clone based on PascalPro and P4

Мова исходника. pas (Borland Pascal)

Вихідний мова. asm (Nasm.)

193kb) Turbo Pascal v3.01A IDE + built-in compiler (c) 1983-1985 by Borland International

Насправді це дизасемблювати текст, але збережений в дещо незвичному вигляді. Щоб отримати його читабельний варіант, потрібно лише слідувати інструкціям в файлі readme. Отриманий в результаті асемблерний лістинг буде несумісний з сучасними асемблер, для успішного реассемблірованія необхідно використовувати старий as.com, включений в даний архів. Детальний опис внутрішніх алгоритмів компілятора додається (англійською).

Мова исходника. asm (AS)

Вихідний формат. com

Документація: англійською

Не пам'ятаю, де я викопав цю штуку, але це вихідні Борландовкого Паскаля! Чи не все, правда, а тільки IDE і вбудованого компілятора. Для рекомпіляції потрібно tpc.exe шостої версії, все .tpu модулі, tasm.exe бажано не v4.1 (глючний!) І make.exe з тасмовского комплекту.

Мова исходника. pas. asm

Вихідний формат: mz .exe