Cuprins
- 1.Introducere
- 2.Compilator
- 2.1. Ce este un compilator?
- 2.2. Ce este compilarea?
- 2.3. Structura si fazele compilatorului
- 2.3.1. Structura generala
- 2.3.2. Structura detaliata
- 3.Limbaj de programare
- 3.1. Ce este un limbaj de programare?
- 3.2. Clasificarea limbejelor de programare
- 3.3. Limbaje de programare de nivel inalt
- 3.3.1. Limbajul C
- 3.3.2. Limbajul Java
- 3.3.3. Limbajul Pascal
- 4. Analiza lexicala
- 5. Analiza sintactica
- 6. Analiza semantica
- 7. Compilatorul Microsoft Cl.exe si compilatoarele Gcc din Linux
- 7.1. Compilatorul Microsoft Cl.exe
- 7.2. Compilatoarele Gcc din Linux
- 7.3. Compilarea in general
- 7.3.1. Preprocesarea C
- 7.3.2. Analiza si translatarea
- 7.3.3. Asamblare
- 7.3.4. Link-editarea ( editarea legaturilor )
Extras din proiect
Grace Murray Hooper a fost o figură importantă în domeniul informaticii. Aceasta a fost un ofiţer în marina militară a Statelor Unite ale Americii şi un pionier în domeniul informaticii.
Mai important, ea a dezvoltat primul compilator pentru un limbaj de programare. În 1952 ea crease un compilator funcţional. „Nimeni nu m-a crezut. Aveam un compilator funcţional şi nimeni nu voia să se atingă de el. Mi-au spus că computerele vor face doar aritmetică“, a spus ea.
La sfarsitul anilor 1950, au fost propuse limbajele de programare independente, care ruleaza pe diferite tipuri de procesoare si microarhitecturi. Ulterior, au fost concepute mai multe compilatoare experimentale.
Primul compilator a fost realizat de Grace Hooper in 1952 pentru limbajul programare A-0. Echipa FORTRAN, de la IBM, condusa de John Backus este cunoscuta ca fiind cea care a introdus primul compilator, in 1957. COBOL a fost in 1960 un limbaj timpuriu compilat pe multiple arhitecturi
Cât a lucrat la IBM, Hooper, alături de alţi programatori, a inventat limbajul de programare Cobol, care a fost utilizat în marile întreprinderi cât şi în instituţiile financiare.
2. Compilator
2.1. Ce este un compilator ?
Un compilator este o aplicaţie software ce realizează translatarea codului scris în limbaj de programare de nivel înalt în cod maşină.
Compilatorul este un program (sau set de programe) ce interpreteaza textul scris in limbajul sursa in alt limbaj, numit limbajul “target”. Succesiunea originala este numita, de obicei, codul sursa, iar output-ul este codul obiect. In mod obisnuit, iesirea are o forma potrivita pentru procesarea de catre alte programe (de exemplu, linker), dar poate fi un fisier text human-readable.
Motivul pentru care dorim sa interpretam codul sursa este de a crea un program executabil. Numele “compilator” este folosit in principal, la programele care interpreteaza codul sursa dintr-un limbaj de programare de nivel superior intr-un limbaj de nivel inferior (de exemplu, limbaj de asamblare sau limbaj masina).
Programul care interpreteaza un limbaj de un nivel inferior intr-unul de un nivel superior, se numeste decompilator.
Programul care interpreteaza limbaje de nivel superior se numeste, de obicei, traducator de limbaj, traducator sursa la sursa sau convertor de limbaj.
Limbajul de rescriere este un program care interpreteaza forma expresiilor fara sa schimbe limbajul.
Un compilator executa majoritatea operatiunilor urmatoare: analiza lexicala, preprocesare, analiza unui text, analiza semantica, generarea codului si optimizarea codului.
2.2. Ce este compilarea?
Compilarea este procesul de translatare a codului scris într-un limbaj structurat de programare în instrucţiuni specifice procesorului pe care urmează să ruleze aplicaţia respectivă, în cod maşină, insa, spre exemplu instrucţiunea repetitivă for este echivalentă cu 4 instrucţiuni în limbaj de asamblare. Din acest motiv, scrierea unui program în cod maşină este foarte anevoioasă.
Compilarea este realizată cu ajutorul compilatoarelor. Procesul de compilare depinde de sistemul de operare utilizat şi de arhitectura hardware folosită. Compilatorul utilizat în LINUX pentru compilarea unui program C scris pentru arhitectura hardware x86 diferă de compilatorul utilizat sub Windows pentru compilarea aceluiaşi cod sursă.
Compilarea are loc dacă în codul sursă nu sunt detectate erori de sintaxă. Compilatoarele nu detectează erorile logice cum sunt împărţirile la 0.
În urma procesului de compilare, rezultă un fişier binar(obiect). Funcţie de sistemul de operare, acest fişier va fi legat cu alte fişiere necesare rulării programului (librării de funcţii, resurse) rezultând un fişier cu extensia exe subWindows sau bin în Linux.
2.3. Structura si fazele compilatorului
Procesul de compilare a unui program are loc in mai multe faze. O faza este o operatie unitara in cadrul careia are loc transformarea programului sursa dintr-o reprezentare in alta.
Principalele faze ale unei compilari sunt prezentate mai jos :
2.3.1. Structura generala
2.3.2. Structura detaliata
Fazele unui proces de compilare se pot înlantui, în principiu, în doua moduri:
La iesirea fiecarei faze se va genera un fisier intermediar continand forma de reprezentare a programului sursa rezultata in faza respectiva, fisier care va constitui intrare pentru faza urmatoare. In acest caz, in fiecare faza va avea loc cel putin o parcurgere a programului sursa, de la inceput la sfarsit. O asemenea parcurgere se numeste trecere.
Bibliografie
Addison Wesley - Compilers: Principles, Techniques and Tools - Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman
- Addison Wesley - Compiler Design - Formal Syntax And Semantics Of Programming Language (1995)
- Luca - Dan Serbanuti - Limbaje de Programare si Compilatoare - Ed. Academiei Republicii Socialiste Romania, Bucuresti, 1987
- Morgan Kaufmann - Engineering A Compiler.pdf
- https://gcc.gnu.org/onlinedocs/gcc/index.html#toc_Standards
- http://en.wikipedia.org/wiki/GNU_Compiler_Collection
- http://en.wikipedia.org/wiki/Backus-Naur_form
- http://rrg.utcluj.ro/cb/Laborator_9.pdf
- http://cursuri.cs.pub.ro/~cpl/Curs/CPL-Curs01.pdf
- https://docs.python.org/3/reference/lexical_analysis.html
- http://ocw.cs.pub.ro/courses/uso/laboratoare/laborator-03
- http://labs.cs.upt.ro/labs/lft/html/LFT03.htm
Preview document
Conținut arhivă zip
- Compilatoare.docx