5
UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET „MIHAJLO PUPIN“ ZRENJANIN NASTAVNI PREDMET: Programski prevodioci PREDMETNI NASTAVNIK: Doc. dr Ljubica Kazi ŠK. 2020/21 1. ČAS – 12.2.2021. - PREDAVANJA TEMA: Programski prevodilac definicija, zadaci, tipovi, princip rada, struktura 1.1. Definicija i vrste programskih prevodilaca Definicija programskog prevodioca Program koji prevodi programski tekst sa jednog programskog jezika na drugi programski jezik. Vrste programskih prevodilaca u odnosu na način prevođenja: Kompajler prevodi ceo program (prevoĎenje sa višeg programskog jezika na mašinski jezik). Interpreter prevodi u toku izvršavanja jednu po jednu naredbu. Komparacija načina rada kompajlera i interpretera: Izvor (https://www.circuitstoday.com/compilers-vs-interpreters-an-overview-of-the-differences)

1.1. Definicija i vrste programskih prevodilaca

  • Upload
    others

  • View
    37

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 1.1. Definicija i vrste programskih prevodilaca

UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET „MIHAJLO PUPIN“ ZRENJANIN NASTAVNI PREDMET: Programski prevodioci PREDMETNI NASTAVNIK: Doc. dr Ljubica Kazi ŠK. 2020/21 1. ČAS – 12.2.2021. - PREDAVANJA TEMA: Programski prevodilac – definicija, zadaci, tipovi, princip rada, struktura

1.1. Definicija i vrste programskih prevodilaca

Definicija programskog prevodioca

Program koji prevodi programski tekst sa jednog programskog jezika na drugi programski

jezik.

Vrste programskih prevodilaca u odnosu na način prevođenja: • Kompajler – prevodi ceo program (prevoĎenje sa višeg programskog jezika na

mašinski jezik). • Interpreter – prevodi u toku izvršavanja jednu po jednu naredbu.

Komparacija načina rada kompajlera i interpretera:

Izvor (https://www.circuitstoday.com/compilers-vs-interpreters-an-overview-of-the-differences)

Page 2: 1.1. Definicija i vrste programskih prevodilaca

1.2. Zadaci i faze rada kompajlera

Ulaz i izlaz za kompajlere predstavlja: - Izvorni (source) program – tekst programa napisan na jeziku višeg nivoa

- Ciljni (target) program - naziva se objektni kod, a predstavlja izvršni program,

koji nastaje nakon prevoĎenja. Izvršni program je napisan kao mašinski kod u odnosu na ciljni računar na kom treba da se izvršava.

Osnovni zadaci kompajlera su:

- Transformacija iz izvornog programa napisanog na jeziku višeg nivoa u ciljni izrvšni program

- Detekcija grešaka izvornog programskog koda

Osnovne dve faze rada kompajlera su:

1. Analiza (“front-end” grupa aktivnosti) – ulaz je izvorni kod napisan na višem programskom jeziku, a rezultat rada je meĎukod.

2. Sinteza (“back-end” grupa aktivnosti) – ulaz je meĎukod, a izlaz je mašinski kod.

(Izvor: https://www.tutorialspoint.com/compiler_design/compiler_design_architecture.htm)

Page 3: 1.1. Definicija i vrste programskih prevodilaca

Komponente arhitekture kompajlera

Osnovne komponente arhitekture kompajlera predstavljaju moduli, koji mogu biti realizovani i kao zasebni alati, ali su najčešće integrisani u okviru kompajlera. Svaki od

modula realizuje odreĎenu grupu aktivnosti.

Osnovne komponente kompajlera su odreĎene fazama i aktivnostima:

I FAZA – ANALIZA (“Front-end”)

1. LEKSIČKI ANALIZATOR - SKENER realizuje leksičku analizu izvornog programskog

koda. Prepoznaje lekseme (reči) u početnom tekstu i zamenjuje ih tokenima

(opštijim oblikom).

2. SINTAKSNI ANALIZATOR - PARSER realizuje sintaksnu analizu nad prethodno

tokenizovanim tekstom. 3. SEMANTIČKI ANALIZATOR

4. GENERATOR MEĐUKODA

II FAZA – SINTEZA (“Back end”) 1. MAŠINSKI NEZAVISAN OPTIMIZATOR MEĐUKODA 2. GENERATOR ASEMBLERSKOG KODA

3. MAŠINSKI ZAVISAN OPTIMIZATOR ASEMBLERSKOG KODA 4. GENERATOR MAŠINSKOG KODA

Transformisana slika na osnovu: PROGRAMSKI PREVODIOCI, Elektronski fakultet Niš, 2017.

Page 4: 1.1. Definicija i vrste programskih prevodilaca

1.3. Primeri procesa rada kompajlera različiih programskih jezika

Izvor: Dr Jean-Claude Franchitti: “Session 1 – Main Theme, Programming Languages overview and syntax”, New York University, Computer Science Department, Courant

Institute of Mathematical Sciences.

Fortran

Programski jezik C

Ranije verzije C++

Java

Mnogi sistemi kombinuju aspekte kompajlera i interpretera. Jedan primer je Java. Java kao programski jezik pripada grupi kompajliranih, ali se ne kompajlira za neki konkretan

realan CPU, već za Java Virtualnu Mašinu (JVM). S obzirom da za JVM ne postoji realan

CPU, on se emulira.

Page 5: 1.1. Definicija i vrste programskih prevodilaca

Većina programskih jezika

Dakle, kod većine programskih jezika, proces transformisanja izvornog koda u

objektni kod uz primenu kompajlera, asemblera i linkera je sledeći: 1. Izvorni kod (napisan na višem programskom kodu) predstavlja ulaz u program

Kompajler, a izlaz je asemblerski kod. 2. PrevoĎenje asemblerskog koda u mašinski kod radi generator mašinskog koda, tj.

progam Asembler. 3. Najčešće je taj mašinski (objektni kod) nepotpun i spaja se sa objektnim kodom iz

dodatnih biblioteka programskog koda. To spajanje radi program Linker. 4. Nakon spajanja objektnog koda osnovne aplikacije i objektnog koda biblioteka dobija

se konačan oblik objektnog koda (izvršnog koda u mašinskom obliku). ORJENTACIONA PITANJA ZA ZAVRŠNI ISPITNI TEST

1. Definicija programskog prevodioca. 2. Vrste programskih prevodilaca u odnosu na način prevođenja. 3. Razlika između kompajlera I interpretera. 4. Objasniti ulaz I izlaz iz kompajlera. 5. Objasniti pojam objektnog koda. 6. Osnovni zadaci kompajlera. 7. Objasniti osnovne faze rada kompajlera. 8. Objasniti komponente kompajlera u odnosu na osnovne faze I aktivnosti rada kompajlera. 9. Objasniti povezanost rada skenera I parsera. 10. Koja je razlika između skenera I parsera. 11. Objasniti module kompajlera koji realizuju aktivnosti u fazi analize. 12. Objasniti module kompajlera koji realizuju aktivnosti u fazi sinteze. 13. Objasniti process rada kompajlera za vedinu programskih jezika i ulogu asemblera i linkera.