17
4.4 PREVOĐENJE, POVEZIVANJE I PUNJENJE PROGRAMA Ivan Radaković 062/2009 ARHITEKTURA RAČUNARA

Seminarski - prezentacija

Embed Size (px)

Citation preview

Page 1: Seminarski - prezentacija

4.4 PREVOĐENJE, POVEZIVANJE I PUNJENJE

PROGRAMA

Ivan Radaković 062/2009

ARHITEKTURA RAČUNARA

Page 2: Seminarski - prezentacija

ASSEMBLER

Asembler je program koji služi za prevođenje korisničkih programa iz simboličkog u binarni oblik.

Na početku rada asemblera u memoriji se nalazi korisnički program.

Takodje, za rad asemblera je neophodno da se u memoriji nađu i sledeći podaci:

• tabela instrukcija

• memorijska lokacija za Brojač Lokacija (BL)

• tabela simbola koju formira asembler u toku rada

Page 3: Seminarski - prezentacija

TABELA INSTRUKCIJA

Za rad asemblera su bitne poslednje dve kolone iz tabele!

Page 4: Seminarski - prezentacija

PRINCIP RADA ASEMBLERA SA DVA PROLAZA

(TWO –PASS ASSEMBLER )

Page 5: Seminarski - prezentacija

PRVI PROLAZ ASEMBLERA :

Brojač Lokacija se postavlja na nulu Inicijalizuje se tabela simbola Asembler uzima prvu instrukciju programa (LOAD B) Na osnovu tabele instrukcija pronalazi odgovarajući binarni operacioni kod (0001) Simboličku adresu B upisuje u tabelu simbola Prepisuje instrukciju u binarno-simboličkom obliku u memoriju (lokacija 0) Sadržaj Brojača Lokacija se uvećava za jedan Postupak se ponavlja za sve instrukcije simboličkog programa

Page 6: Seminarski - prezentacija

REZULTATI PRVOG PROLAZA:

Program je u binarno-simboličkom obliku (operacioni kodovi su u binarnom, a adrese podataka u simboličkom obliku)

U tabeli simbola su popisane sve simboličke adrese

Brojač Lokacija ukazuje na sledeću slobodnu lokaciju u memoriji sa adresom 4 (lokacije sa adresama 0, 1, 2 i 3 zauzele su četiri instrukcije programa)

Page 7: Seminarski - prezentacija

MEĐUFAZA (RAD ASEMBLERA IZMEĐU PRVOG I

DRUGOG PROLAZA)

Sledeće tri slobodne lokacije u memoriji, na adresama 4, 5 i 6 se dodejuju simboličkim adresama, odnosno promenljivama B, C i A

Page 8: Seminarski - prezentacija

DRUGI PROLAZ ASEMBLERA:

Asembler prolazi kroz binarno-simbolički oblik programa

U svakoj instrukciji simbolička adresa se zamenjuje odgovarajućum memorijskom (fizičkom) adresom na osnovu tabele simbola

Korisnički program je preveden u mašinski (binarni) oblik i spreman je za izvršavanje

Page 9: Seminarski - prezentacija

Pseudo - kod principa rada asemblera sa dva

prolazabegin (* asembler *)

BL:=0;

Inicijaliziraj tabelu simbola;

(* prvi prolaz *)

while nije kraj simboličkog programa

do uzmi instrukciju simboličkog programa;

prevedi opkod u binarni oblik na osnovu tabele instrukcija;

if simbolička adresa nije u tabeli simbola

then upiši simboličku adresu u tabelu simbola;

prepiši instrukciju u binarno-simboličkom obliku;

BL:=BL+1

(* medjufaza *)

while nije kraj tabele simbola

do upiši S(BL) u sledeći nepopunjen red tabele simbola;

BL:=BL+1

(* drugi prolaz *)

while nije kraj binarno-simboličkog

programa

do uzmi instrukciju binarno-simboličkog

programa;

simboličku adresu zameni fizičkom

adresom iz tabele simbola;

prepiši instrukciju u binarnom obliku

end. (* asembler *)

Page 10: Seminarski - prezentacija

COMPILER(PREVODILAC)

Compiler je poseban program koji prevodi korisničke programe sa višeg programskog jezika na simbolički (asemblerski) jezik.

Prevođenje koje vrši kompajler je tipa 1:n jer za jednunaredbu višeg programskog jezika kompajler generiše više naredbi asemblerskog jezika.

Prevođenje koje vrši asembler je tipa 1:1 jer, po pravilu, za jednu simboličku naredbu asembler generiše jednu mašinsku naredbu.

Page 11: Seminarski - prezentacija

COMPILER – LINKER – LOADER

Page 12: Seminarski - prezentacija

PODPROGRAMI

Jedno od moćnih "oružja" u programiranju je izrada i korišćenje podprograma.

Podprogrami su logičke zaokružene programske celine koje se mogu koristiti od strane drugih programa.

Može ih pisati sam programer za potrebe rešavanja konkretnog problema, a moguće je i kupiti biblioteke gotovih podprograma.

Page 13: Seminarski - prezentacija

PODPROGRAMI Osnovna karakteristika podprograma je da se oni prevode nezavisno od programskih celina koje ih koriste (pozivaoca). Neophodno je da u pozivaocu postoji eksplicitna naredba za poziv podprograma. Po izvršenju naredbe poziva podprograma, prekida se izvršavanje pozivaoca i počinje izvršavanje pozvanog podprograma, koji se uvek završava naredbom povratka u pozivaoca. Povezivanje programa i podprograma se vrši pomoću posebnog programa - LINKERa

Page 14: Seminarski - prezentacija

LINKER Linker je program koji povezuje glavni program i sve podprograme u jednu celinu kako bi se omogućio prelazak iz jedne programske celine (modula) u drugu.

Na svom ulazu dobija programske module u binarno-simboličkom obliku a na izlazu daje povezanu programsku celinu u binarnom obliku.

Ta povezana celina se zove relokatibilni binarni kod, jer je u takvom obliku da se može uneti (locirati) u bilo koji slobodan deo memorije.

Page 15: Seminarski - prezentacija

LINKER

Drugim rečima, prilikom više izvršavanja programa, relokatibilni binarni kod se može svaki put uneti u neki drugi deo memorije i svaki put se može uspešno izvršiti.

Često se dešava da se program unese i počne da se izvršava u jednom delu memorije, i da se u toku izvršavanja premesti (relocira) nekoliko puta u memoriji, pri čemu se njegov rad i dalje odvija neometano.

Page 16: Seminarski - prezentacija

LOADER ( PROGRAM ZA PUNJENJE :)

Loader je sistemski program koji se aktivira svaki put kada programer zahteva izvršavanje prevedenog i povezanog programa.

Programer ispostavlja zahtev operativnom sistemu koji pronalazi slobodan prostor u memoriji i zatim aktivira program za punjenje čiji je zadatak da relokatibilni binarni kod sa sekundarne memorije prepiše u deo memorije koji je odredio operativni sistem.

Page 17: Seminarski - prezentacija

LITERATURA:

prof.dr. Srđan Atanasijević - “IZVRŠAVANJE INSTRUKCIJA I PROGRAMA”