seminarski - prezentacija
TRANSCRIPT
4.4 PREVOĐENJE, POVEZIVANJE I PUNJENJE
PROGRAMA
Ivan Radaković 062/2009
ARHITEKTURA RAČUNARA
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
TABELA INSTRUKCIJA
Za rad asemblera su bitne poslednje dve kolone iz tabele!
PRINCIP RADA ASEMBLERA SA DVA PROLAZA
(TWO –PASS ASSEMBLER )
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
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)
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
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
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 *)
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.
COMPILER – LINKER – LOADER
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.
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
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.
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.
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.
LITERATURA:
prof.dr. Srđan Atanasijević - “IZVRŠAVANJE INSTRUKCIJA I PROGRAMA”