Bazele surselor de compilatoare, c, c, pascal

Mulți dintre compilatorii de mai jos sunt scrise de entuziaști pentru scopuri educaționale sau pentru divertisment. Datorită diferitelor motive (în principal din cauza lenei și a lipsei de timp), marea majoritate a acestor proiecte au fost abandonate la jumătatea drumului, iar unele chiar la câțiva metri de la început. Din acest motiv, multe compilatoare nu au funcționalități și capabilități. Dar, în scopuri educaționale, cred că se potrivesc.






Pe subtilități. Deoarece mulți dezvoltatori au decis să conteste formatul de ieșire este destul de simplu - nu se face cu fișiere obiect și executabile, înlocuindu-l cu o simpla lista de text a ansamblului, - necesitatea ulterioară de asamblare udobovareniya și poate legătură. Dar, în opinia mea, aceasta este o abordare mai rațională.

Aproape în toate aceste arhive există deja versiuni compilate ale programelor, dacă nu se specifică altfel.

Un mic compilator de jucării de la QuickBasic din Nasm. Caracteristicile programului nu sunt încă minunate. Un exemplu este atașat. Nu este compilat.

Limba sursă. bas (QuickBasic PDS v7.1)

Limba de ieșire. asm (16-bit => Nasm => .com, mz .exe)

81kb) Compilator de bază pentru MenuetOS (c) de Jarek Pelczar

După cum sugerează și numele, acesta este un mic compilator BASIC. De fapt, acesta este inclus în distribuția OS Menuet alternativă. dar lăsați-l să stea aici pentru fiabilitate. Generă codul de 32 de biți pentru modul protejat (nu DOS, ci MenuetOS), deși puteți crea un fișier .com. Și o altă observație: atunci când se calculează o expresie matematică, se emite un cod de asamblare foarte neabsorbit, la fel ca în compilarele "student" (vezi mai jos).

Limba sursă. c (GNU C)

Limba de ieșire. asm (32 bit => Nasm, Fasm => .bin. com)

Ultima versiune a unui compilator foarte popular, de la BASIC, la asamblare. În kitul IDE cu ajutorul unui dezvoltator terț, asamblator (Arrowsoft), linker și multe exemple. Ca și Sphinx C--, Basm286 calculează expresii de la stânga la dreapta, fără prioritizare.

Limba sursă. bas (Power Basic 3.2)

Limba de ieșire. asm (16 biți => Arrosoft asm => mz .exe.com)

Documentație: în limba engleză

Acest compilator implementează un subset de QuickBasic / RapidQ. Până în prezent, Bxbasm poate compila numai aplicațiile consolei Win32. Caracteristică: Bxbasm în lista de asamblare de ieșire utilizează multe macro-uri interne Masm32 (cum ar fi în cazul în care invoca-.else-.endif, etc ...) O versiune completă (cu pachetul Masm32 - aproximativ 2.5MB) pot fi descărcate de pe pagina de start.

Limba sursă. c (Lcc-Win32)

Limba de ieșire. asm (32 de biți => Masm32 => pe .exe)

Documentație: în limba engleză

Limba sursă. bas (QuickBasic v4.5 v7.1)

Limba de ieșire. asm (32 de biți => Nasm => WDosX .exe)

Documentație: în limba engleză

Creat ca o alternativă la QuickBasic. Generează o listă foarte compactă de asm și, în consecință, fișierul executabil este mic. Spre deosebire de multe alte dialecte ale limbajului, ea calculează expresia de la stânga la dreapta, ignorând prioritățile (la fel ca Sfinxul C).

Limba sursă. bas (QuickBasic v4.5 v7.1)

Limba de ieșire. asm (16-bit => Tasm, Masm => mz .exe com)

Documentație: în limba engleză

Implementare foarte interesantă a compilatorului BASIC. Sintaxa limbii este foarte aproape de QuickBasic. Supported: proceduri / funcții (/ variabile globale locale), întregul tipurile de date (matrici doar parțial), aproape toate construcțiile condiționate și looping. Dar îi lipsește orice biblioteci externe, adică nu se poate utiliza cuvântul cheie PRINT, desenați, etc Deși acest compilator se ocupă de prioritățile în calcularea expresiilor, cum ar fi „n = (x * (20-b / a) -function1 (un .. * b, x * (ZY), b)) „și generează suficient de cod optimizat (fără aceste spaghete pushs și POP-uri!) formatul de ieșire este o simplă listare asm.

Limba sursă. bas (MS QuickBasic PDS v7.1)

Limba de ieșire. 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-Preprocesor: Peter Knappe)

Ați văzut vreodată un compilator scris în GW-Basic? Nu? Imaginația nu pornește? Ei bine, uite - acesta este coșmarul programatorului sylish. Limba de intrare a compilatorului este aproape complet compatibilă cu GW-Basic. Interesant este că compilatorul se compilează. Arhiva conține, de asemenea, sursele unui IDE mic (și pe BASIC).

Limba sursă. bas (à la GW-Basic)

Formatul de ieșire: mz .exe

Un alt compilator de jucărie pentru o limbă care seamănă cu Basic și Pascal.

Limba sursă. bas (PowerBasic)

Limba de ieșire. asm (16-bit => Nasm => mz .exe)

Limba sursă. bas (QuickBasic v4.5 v7.1)

Limba de ieșire. asm (32 de biți => Nasm => WDosX .exe, pe .exe)

Documentație: în limba engleză

Nu există nicio documentație inteligibilă pentru acest program, deci nu a fost posibilă rezolvarea problemelor. Este clar că este vorba despre un compilator de tip C și că poate emite o listă de asamblare pentru Motorola 6809 și Intel 8086/386 (cod de 16 și 32 de biți). Există mai multe exemple în arhivă. La acest compilator sunt încă atașate as.zip assembler (

26kb). Sursele complete cu binare compilate pentru MS-DOS pot fi descărcate de pe site-ul de acasă.

Limba sursă. c (GNU C)

Limba de ieșire. asm (16, 32-bit => AS => mz, pe .exe)

Acesta este un fel de limbaj C, este numit nu mai puțin scurt - Bee. Probabil din cauza faptului că până la normalul C este un pic mai mic decât acesta. Cu toate acestea, acesta produce codul de 32 de biți pentru extensia WDosX.

Limba sursă. c (GNU C)

Limba de ieșire. asm (32-bit => Nasm, Fasm => WDosX .exe)

Documentație: în limba engleză

Un compilator foarte mic, asemănător C, creat de un programator pakistanez ca o lucrare universitară. Codul de ieșire este foarte ne-optimizat (rețineți că compilatorii noștri "studenți" au același dezavantaj). Sunt anexate câteva exemple și o descriere detaliată a algoritmilor interni. O mică notă: pentru recompilare numai MSVC ++ 6.0 (cel puțin sub Watcom și Mingw compilați complet refuzat).






Limba sursă. cpp (numai MS Visual C ++ 6.0)

Limba de ieșire. asm (16-bit => Tasm, Masm => mz .exe)

Documentație: în limba engleză

149kb) 68000 și compilatorul i386 C Compiler v3.1 (c) de Christoph van Wuellen

Judecând după nume, poate emite o listă de asamblare pentru procesoarele de 68000 (se pare că se pare Motorola) și i386 (codul pe 32 de biți). În arhivă numai codul sursă, fără binare. Se pare că toate acestea ar trebui să fie sub SunOS. Pe scurt, nu am înțeles. Nu este compilat.

Limba sursă. c (ANSI C)

Limba de ieșire. asm (asamblor GNU GAS).

Documentație: în limba engleză

Este un compilator personalizabil multilingv, limbaj de intrare și generare de coduri pentru care trebuie să definiți utilizând fișiere externe .def. Oportunitățile sunt totuși extrem de limitate. Această versiune este setată la limbajul similar C. Recent, proiectul a fost reînviat pe baza Sourceforge.net, cea mai recentă versiune sub numărul 0.82 este mult mai funcțională. Documentația este extrem de mică.

Limba sursă. pas (Pascal gratuit)

Limba de ieșire. asm (16-bit => Nasm => mz .exe)

Documentație: în limba engleză

Limba sursă. c (GNU C, Borland C)

Limba de ieșire. asm (32-bit => Masm => .exe)

Documentație: în limba engleză

74kb) Byte mici C V1.0 (c) 1986 de Rick Grehan

Un subset intreg de Cu.

Limba sursă. c (ANSI C) pare să se compileze.

Limba de ieșire. asm (16 biți => Tasm => .com)

Documentație: în limba engleză

Limba sursă. c (GNU C)

Formatul de ieșire. asm (32-bit => Sasm => DJGPP .exe)

Documentație: în limba engleză

Clone Si. Folosește o parte din Borland C.

Limba sursă. cpp (Borland C ++)

Limba de ieșire. asm (16-bit => Tasm => mz .exe)

Documentație: în limba rusă

Limba sursă. moo (MoonRock Basic Compiler, mai scurtă, vezi mai sus.)

Limba de ieșire. asm (16 biți => Tasm, Masm => .com)

Documentație: în limba engleză

133kb) Small C Compiler v2.2 (c) 1989 de James Hendrix

Un alt C-compilator mic.

Limba sursă. c (se compilează)

Limba de ieșire. asm (16 biți => Tasm, Masm => .com, mz .exe)

Documentație: în limba engleză

Clona Sfinxul C - scrisă chiar pe C -. Imediat produce pe .exe

Limba sursă. c- (Sfinx C-v0.238)

Formatul de ieșire. pe exe

Documentație: în limba rusă

Când Peter Sellick sa retras, a dat oamenilor codul sursă al Sfinxului C de neuitat. Aici versiunea 2.0, și, după cum gândea Sellick, ultima. Da. Figushki. Bunurile astea nu stau mult timp. După cum se știe, proiectul a fost reînviat de Mikhail Sheker. Vrei să simți diferența? Descărcați fișierul, apoi rapid aici. Despre ce vorbesc? Da, da. Pe scurt, compilatorul este scris în C, recompilarea normală C va necesita C minor. Aceasta este a șasea versiune. Nu mai puțin. Fondurile sursă de bursă sunt, de asemenea, incluse în arhivă. E pe pascal, apropo. Pentru cei care nu știu, am raportat o caracteristică: Sfinxul calculează expresii de la stânga la dreapta, indiferent de priorități.

Limba sursă. c (Microsoft C 6.0)

Formatul de ieșire. com. obj

Documentație: în limba engleză

Compilatorul limbajului de programare, așa cum a fost înțeles în zilele lui Wirth, este mic, clar și capabil să se compună. Este păcat că adepții vechilor idei sunt puțini. Limbajul de context este un pic asemănător modulului cu unele elemente C. În kit un mic asamblor, scris, desigur, în context, și documentația în limba rusă cu privire la construirea de compilatoare. Nu există optimizator în Context, dar calitatea codului este comparabilă cu versiunile anterioare ale Turbo Pascal. O versiune mai nouă 1.2 cu câteva exemple: samples.zip (

Limba sursă. ctx (se compilează singură)

Limba de ieșire. asm (16 biți => asm8086 => .com)

Documentație: în limba rusă

Aceasta este versiunea de context, rescrisă din nou pentru Win32. Algoritmul intern de compilare diferă oarecum de cel corespunzător din versiunea DOS (a existat un spațiu pentru optimizator, care însă nu a fost niciodată scris).

Limba sursă. ctx (se compilează singură)

Limba de ieșire. asm (32 biți => Tasm => pe .exe)

Această arhivă am pescuit de la un site japonez și printr-un link de la francez. Cât de mult Cabezon este compatibil cu Pascal, nu am verificat, dar judecând după exemple, e destul de bine. Toată documentația este în limba japoneză, și chiar personajele nu pot fi văzute - în loc de ele vor exista niște gunoi de două caractere de tip Unicode :-) Biblioteca include și sursele bibliotecilor.

Limba sursă. pas (probabil Borland Pascal).

Limba de ieșire. asm (16 biți => Tasm, Masm => mz .exe)

Documentație: în limba japoneză 8- /

Un mic compilator al subspecii Pascal. Spre deosebire de multe altele similare, încerc să optimizez codul (nu într-adevăr, într-adevăr, cu succes). Este corectat de mine personal, pentru a compila fără probleme în Free Pascal. A scrie programe mai mult sau mai putin inteligente nu este potrivita.

Limba sursă. pas (Borland Pascal, Pascal gratuit).

Limba de ieșire. asm (16 biți => Tasm, Masm => mz .exe. com)

Pascal-compiler, integrat cu IDE și depanator. Generat Win32 pe. Exe necesită ipsupport.dll (

27kb), care, bineînțeles, este grupată. Fișierul este foarte mic, dar codul nu este optimizat.

Limba sursă. pas (Delphi)

Format de ieșire: pe .exe

Documentație: în limba engleză

Un mic compilator de limbaj asemănător cu Pascal. Creat ca o lucrare de curs pentru disciplina "Fundamentele traducerii". În interior, de asemenea, sursele unui IDE mic și documentația (referitoare la construirea de compilatoare) în limba rusă.

Limba sursă. c (Borland C)

Formatul de ieșire. com

Documentație: în limba rusă

O altă încercare demn de remarcat este implementarea unui Pascal pe 32 de biți. Din plusuri puteți nota suportul pentru numerele cu virgulă mobilă, compatibilitatea cu Borland Pascal atât în ​​sintaxă cât și în biblioteci, optimizarea codului Pentium și capacitatea de a crea fișiere executabile pentru Dos32, Wdosx și Win32. Din minusuri: aparent, proiectul din motive necunoscute a fost pierdut în rețea acum câțiva ani. În kit-ul IDE, documentație și exemple scurte.

Limba sursă. pas (Borland Pascal)

Limba de ieșire. asm (32-bit => Nasm, Tasm, Pass32 => Dos32.exe, Wdosx .exe, pe .exe)

Documentație: în limba engleză

Nici o relație cu PL / 1 nu are, mai degrabă, această limbă este similară cu Pascal. O soluție ciudată și veche (în opinia mea) este că compilatorul în sine este împărțit în mai multe părți (executabile): scanner -> parser -> pseudocod -> coder în asamblare.

Limba sursă. c (Borland C 3.1 - 4.5, GNU C 2.7.1)

Limba de ieșire. asm (16 biți => Tasm => mz .exe)

Acest compilator Pascal produce fișiere executabile pentru OS2.

Limba sursă. pas (Borland Pascal)

Formatul de ieșire. asm (32 de biți => Masm 6.0 + Link386 => lx .exe)

303kb) S Compilator (c) de Henry Lesourd

Compilatorul implementează un limbaj hibrid Pascal-BASIC și produce propriul format de fișier executabil, un amestec de bytecode și asamblare. Una dintre posibilități este compilarea într-un fișier .com.

Limba sursă. pas (Borland Pascal)

Formatul de ieșire. pak. com

16 kb) clona Pascal bazată pe PascalPro și P4

Limba sursă. pas (Borland Pascal)

Limba de ieșire. asm (Nasm.)

193kb) Turbo Pascal v3.01A IDE + compilator încorporat (c) 1983-1985 de Borland International

De fapt, acesta este un text dezasamblat, dar păstrat într-o formă puțin neobișnuită. Pentru a fi citit, trebuie doar să urmați instrucțiunile din fișierul readme. Lista de asamblare rezultată nu va fi compatibilă cu asamblorii moderni, pentru reasamblarea cu succes trebuie să utilizați vechiul as.com, inclus în această arhivă. O descriere detaliată a algoritmilor interni ai compilatorului este atașată (în limba engleză).

Limba sursă. asm (AS)

Formatul de ieșire. com

Documentație: în limba engleză

Nu-mi amintesc unde am săpat acest lucru, dar e sursa lui Borland Pascal! Nu totul, într-adevăr, dar numai IDE și compilatorul încorporat. Pentru a recompila, aveți nevoie de tpc.exe al celei de-a șasea versiuni, toate modulele .tpu, tasm.exe preferabil nu v4.1 (buggy!) Și make.exe din pachetul Tasman.

Limba sursă. pas. asm

Formatul de ieșire: mz .exe







Trimiteți-le prietenilor: