Uvod u Programe Prevodioce
Transcript of Uvod u Programe Prevodioce
-
8/18/2019 Uvod u Programe Prevodioce
1/16
UVOD U PROGRAMEUVOD U PROGRAMEPREVODIOCEPREVODIOCE
-
8/18/2019 Uvod u Programe Prevodioce
2/16
UvodUvod
Čovjeku je stran jezik kojega "razumije" raunar! #og toga
je #i$o %otre#no razviti %osrednike me&anizme kojio#av$jaju %retvor#u %rirodnog jezika 'ovjeku razum$jivog(u ma)inski jezik 'raunaru razum$jiv(! Oni mogu #iti*
• prevodioci kompajleri+ i• prevodioci interpreteri!
-
8/18/2019 Uvod u Programe Prevodioce
3/16
,om%aj$er ,om%aj$er
Kompajler 'eng$! compiler ( - %rogram koji %revodi izvorni
kod 'eng$! source code( %rograma za%isanog u jeziku visokognivoa u ma)inski 'ma)inski( jezik 'eng$! machine code, objectcode( samo jednom i to tokom %revo.enja i$i kom%aj$iranja!
Postoje i kom%aj$eri koji %revode iz jednog jezika visokognivoau drugi jezik visokog nivoa 'n%r! C/ront - U0I1 C22kom%aj$er koji %revodi C22 u C(!
-
8/18/2019 Uvod u Programe Prevodioce
4/16
,om%aj$er ,om%aj$er
Program za%isan u
izvornom kodu
Program za%isan uo#jektnom kodu
KOMPAJLER
Poruke o %ogre)kama
-
8/18/2019 Uvod u Programe Prevodioce
5/16
IstorijatIstorijat
Prvi raunari nisu koristi$i kom%aj$ere+ jer su ima$i ma$o memorije i ma$oo%erativni& mogu3nosti+ a korisni4i su unosi$i #inarni+ ma)inski jezikdirektno+ %omo3u %rekidaa na kontro$noj %$oi!
U kasnim 567im+ %rogrameri su otkri$i da se ma)inski jezik mo8e %rikazati %omo3u mnemonika i da raunari mogu te mnemonike %revestiu ma)inski jezik!
Me.u %rve jednostavne kom%aj$ere u#rajaju se* 9&ort Code ':;5;! g(+A7O ':;
-
8/18/2019 Uvod u Programe Prevodioce
6/16
Podje$a kom%aj$eraPodje$a kom%aj$era
Jednoprolazni kompajler 'eng$! one pass compiler (
Višeprolazni kompajler 'eng$! two pass compiler / three pass compiler (
Istorodni kompajler 'eng$! native compiler (
Križni kompajler 'eng$! cross compiler (
Optimiraj!i kompajler 'eng$! optimising compiler (
-
8/18/2019 Uvod u Programe Prevodioce
7/16
Jednoprolazni kompajler - oitava izvorni %rogram samo jednom i to je dovo$jno za %revo.enje u ma)inski jezik!
Višeprolazni kompajler - naj%rije %revodi %rogram u vi)em jeziku 'C+Pas4a$( u asem#$er i$i u neki me.ujezik + a tek zatim u #inarni o#$ikma)inskog jezika! Prevoditi se mo8e u dva 'eng$! two pass compiler ( i$itri %ro$aza 'eng$! three pass compiler (!
Istorodni kompajler - koristi se na istoj vrsti raunara na kojem je %rogram i %reveden!
"kršteni #križni$ kompajler - koristi se na jednoj vrsti raunara+ a %revedeni %rogram na drugoj!
Optimiraj!i kompajler - nastoji %revedeni %rogram uiniti )to kra3imi #r8im %ri izvo.enju!
-
8/18/2019 Uvod u Programe Prevodioce
8/16
9truktura %rograma kom%aj$erskog9truktura %rograma kom%aj$erskog
%revodio4a %revodio4a
Pretprocesiranje - preprocessing Leksi%ka analiza - lexical analysis &intakti%ka analiza - syntax analysis, parsing &emanti%ka analiza - semantic analysis Kompajlerska analiza - compiler analysis Optimizacija - optimization 'eneriranje koda - code generation
BRO0 E0DBRO0 E0D
AC, E0DAC, E0D
-
8/18/2019 Uvod u Programe Prevodioce
9/16
Pro4es kom%aj$iranja mo8emo %odije$iti u nekoliko (aza+ koje su
dio /ront end7a i$i #a4k end7a! Rijetko se s%ominje i midd$e end!9vi osim najmanji& kom%aj$era imaju vi)e od dvije /aze!
Pretprocesiranje ) /aza koju za&tjevaju neki jezi4i 'n%r! C( za
izvo.enje %ro4esa kao )to su us$ovna kom%i$a4ija i zamjenakori)tenjem makro7a$goritama! U s$uaju C7a %ret%ro4esiranjeuk$juuje i $eksiku ana$izu!
Leksi%ka analiza ) %rvi korak u stvaranju %rogramskog jezika!Izvr)ava se nad znakovima %rogramskog jezika od koji& jesastav$jen izvorni kod+ itaju3i %ri tome jedan %o jedan i
%retvaraju3i u utvr.ene jedini4e i$i $ekseme!
-
8/18/2019 Uvod u Programe Prevodioce
10/16
Pretprocesiranje*
0%r !+ %romotrimo s$jede3e*
Ovo je re%enica+ gdje je*
Ve$iko O %oetak iskaza Razmakni4a F odvaja rijei
F! je sim#o$ za zavr)etak iskaza
Leksi%ka analiza dije$i tekst %rograma u rijeirijei i$i Ftokenstokens!
0%r !+ I( , - . t/en z - 01 else z - 2
Hta su dije$ovi ovog tekstaDije$ovi - jedini4e ovog teksta su* I(3 ,3 .3 t/en3 z3 03 else3 z3 2!
-
8/18/2019 Uvod u Programe Prevodioce
11/16
&intakti%ka analiza - ana$iziranje sintakse+ %ostu%ak %rovjeravanja i od$uivanja o tome da $i je niz u$azni& znakova
%rogramskog jezika is%ravan!
Promotrimo %ret&odni %rimjer+ a$i sada sa 4i$jem %rovo.enjasintakti%ke analize*
I( , - . t/en z - 01 else z - 2
, - .
Re$a4ijaPredikat
z - 0
Pridru8ivanje&en iskaz
z - 2
Pridru8ivanjeE$se iskaz
I( ) 4/en ) Else
-
8/18/2019 Uvod u Programe Prevodioce
12/16
&emanti%ka analiza - ana$iza jezika usmjerena na znaenje rijei!
Omogu3ava utvr.ivanje semantiki& %ogre)aka u iskazima %rogramskog jezika!
Kompajlerska analiza - %ro4es %riku%$janja in/orma4ija o %rogramu izme.u%rikaza izvorni& datoteka! 'U /azama /ront end7a ana$izira se
izvorni kod kako #i se izgradio unutarnji %rikaz %rograma+ tj!me5prikaz!( i%ine ana$ize su n%r! de/inisanje7kori)tenje i kori)tenje7de/inisanje varija#$i i ana$iza %okazivaa! Pre4izne ana$ize su osnova zasvaku o%timiza4iju!
Optimizacija - me.u%rikaz se trans/ormi)e u /unk4iona$noekviva$entne+ a$i #r8e i$i manje o#$ike! Po%u$arne o%timiza4ije su %ove3anje u$azni& $inija+ e$imina4ija mrtvi& kodova+ %ro)irenje konstanti+trans/orma4ija %et$ji+ a$oka4ija registara!!!
-
8/18/2019 Uvod u Programe Prevodioce
13/16
'enerisanje koda - trans/ormisani me.u%rikaz jezika se %revodi
u iz$azni jezik+ o#ino istorodni ma)inski jezik sistema! ouk$juuje od$uke o resursima sistema i %o&ranjivanju+ n%r!od$uivanje o tome koju varija#$u s%remiti u registar iJi$imemoriju+ te oda#ir i vremenski ras%ored ma)inski& instruk4ijazajedno s nji&ovim sistemom za adresiranje!
-
8/18/2019 Uvod u Programe Prevodioce
14/16
Gra/iki %rikaz strukture %rogramaGra/iki %rikaz strukture %rograma
%revodio4a %revodio4a
-
8/18/2019 Uvod u Programe Prevodioce
15/16
,om%aj$er vs! inter%reter ,om%aj$er vs! inter%reter
Mnogi $judi dije$e vi)e %rogramske jezike ukom%aj$irane i inter%retirane jezike! 0o+ u samom
%rogramskom jeziku niti jedan dio ne za&tjeva da #udekom%aj$iran i$i inter%retiran!
,om%aj$eri i inter%reteri su samo im%$ementa4ije jezika+
a ne jezi4i sami!
,ategoriza4ija je o#ino odraz naj%o%u$arniji& i$inajra)ireniji& im%$ementa4ija jezika! 0%r! asi4 se
smatra inter%retiranim jezikom+ a C kom%aj$iranim+unato %ostojanju asi4 kom%aj$era i C inter%retera!
-
8/18/2019 Uvod u Programe Prevodioce
16/16
I64ERPRE4ERI - %rogrami %revodio4i+ koji za raz$iku odkom%aj$era %revode i odma& izvr)avaju svaku nared#u vi)eg
%rogramskog jezika! Pomo3u inter%retera ne mo8emo do#iti %rogram u ma)inskom jeziku+ nego se %rogram svaki %utakada ga 8e$imo izvr)iti mora %onovno %revestiinter%reterom!
a raz$iku od inter%retera+ kod kom%aj$era su izvorni %rogram i %revedeni %rogram %ot%uno odvojeni i %riizvo.enju nezavisni! Ako se izmjeni izvorni %rogram+ to sene3e automatski odraziti na izved#enom %rogramu+ nego ga
je %otre#no %onovno kom%aj$irati!
Prednosti kompajlera* #r8i rad od inter%retera i za)ti3en izvorni %rogram!
6edostaci kompajlera* odvojenost %revedenog i izvornog %rograma!