+ All Categories
Home > Documents > Uvod u Programe Prevodioce

Uvod u Programe Prevodioce

Date post: 07-Jul-2018
Category:
Upload: 4k45h4
View: 231 times
Download: 0 times
Share this document with a friend

of 16

Transcript
  • 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!


Recommended