uvod u asemblerski jezik vi poglavlje - karakteristike –

92
Uvod u asemblerski jezik VI poglavlje - Karakteristike

Upload: dominy

Post on 07-Jan-2016

106 views

Category:

Documents


9 download

DESCRIPTION

Uvod u asemblerski jezik VI poglavlje - Karakteristike –. Uvod u asemblerski jezik. Skup instrukcija mikroprocesora predstavlja skup binarnih ula z a koji generi š u odredjene akcije u toku ciklusa jedne instrukcije. Primer :. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Uvod u asemblerski jezik

VI poglavlje

- Karakteristike –

Page 2: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Skup instrukcija mikroprocesora predstavlja skup binarnih ulaza koji generišu odredjene akcije u toku ciklusa jedne instrukcije

Primer :

Verzija instrukcije na mašinskom jeziku za mikroprocesor MC 68000 koja glasi:

"Napuni neposredni decimalni operand 2001 na adresu na koju ukazuje registar A“

ima sledeći 32-bitni format:

0010 0000 0111 1000 0000 0111 1101 0001

Uvod u asemblerski jezikUvod u asemblerski jezik

Page 3: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Primer :

Za mikroprocesor MC 68000 sekvenca :

“Izvrši sabiranje sadržaja dve memorijske lokacije 600016 i 600216, a rezultat smesti u memorijsku lokaciju 600416“

imaće sledeći oblik: 0011 0000 0011 1000

0110 0000 0000 0000

1101 0000 0111 1000

0110 0000 0000 0000

0011 0001 1100 0000

0110 0000 0000 0100

Ovo predstavlja mašinski jezik, ili objektni (object) kôd (program) i njega će mašina direktno izvršavati, tj. ovakav program koga čini

sekvenca 0 i 1 mašina jedino i razume

AAsemblerski jeziksemblerski jezik

Page 4: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Kreiranje programa na mašinskom jeziku se može iskazati kroz sledeća zapažanja:

programi su teški za razumevanje, veoma teško se nalaze greške, a iste nakon toga koriguju

instrukcije se teško unose u mašinu, kuca se bit po bit, a zatim se cela reč unosi u paralelnoj formi

programer često iz nehata čini greške koje je veoma teško locirati, a nakon toga korigovati

programi ne poseduju komentar koji će programeru olakšati rad

programi su dugački i zamorni za analizu

AAsemblerski jeziksemblerski jezik - osobine - osobine

Page 5: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Preglednost programa se može poboljšati ako se binarana forma

0011 0000 0011 1000

0110 0000 0000 0000

1101 0000 0111 1000

0110 0000 0000 0010

0011 0001 1100 0000

0110 0000 0000 0100

napiše u heksadecimalnoj brojnoj notaciji

AAsemblerski jeziksemblerski jezik – binarna forma – binarna forma

Page 6: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

3 0 3 8

6 0 0 0

C 0 7 8

6 0 0 2

7 1 C 0

6 0 0 4

Program koji konvertuje heksadecimalne brojeve u binarne i smešta u memoriju se naziva

"heksadecimalni punilac" – (hexadecimal loader)

AAsemblerski jeziksemblerski jezik – heksadecimalna – heksadecimalna formaforma

Page 7: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Programsko poboljšanje se postiže dodeljivanjem imena svakom instrukcionom kôdu

Ime kôda instrukcije zove se mnemonik

Mnemonik opisuje sa minimalnim brojem znakova šta instrukcija radi

Primer :Add za sabiranje

Sub za oduzimanje

Programska sekvenca za MC 68000, kada se koriste mnemonici, ima sledeći oblik

Move.W $6000, D0

Add.W $6000, D0

Move.W D0,$6004

program napisan na asemblerskom jeziku

AAsemblerski jeziksemblerski jezik – mnemonici – mnemonici

Page 8: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Asemblerski program (asembler) vrši prevodjenje korisničkog programa ili izvornog programa, napisanog

pomoću mnemonika, u program na mašinskom jeziku, ili objektni program, koga će mikroračunar izvršavati

Ulaz u asembler je izvorni program

Izlaz iz asemblera je objektni (izvršivi) program

Move.W $6000, D0

Add.W $6000, D0

Move.W D0,$6004

Za programsku sekvencu

kažemo da je napisana na asemblerskom jeziku

Proces aProces asemblsembliranjairanja

Page 9: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Programer koristi usluge tekst editora za kreiranje tekst datoteke (text file) koja sadrži program napisan na asemblerskom jeziku.

Imena izvorna datoteka (source file) i izvorni program (source program) se često koriste u asemblerskom jeziku i jezicima višeg nivoa da označe tekst datoteke.

Asembler prihvata izvorni program kao ulaz, vrši proveru formata zbog grešaka u pisanju i proizvodi objektni modul koji sadrži program napisan na mašinskom jeziku

Proces razvoja programa na aProces razvoja programa na asemblsemblerskom erskom jezikujeziku

Page 10: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Punilac (loader) smešta objektni modul u memoriju na kojoj će se program izvršavati (ciljna mašina - target machine)

Na ciljnoj mašini program se testira pomoću programa za odstranjivanje grešaka (debugger)

Proces razvoja programa na Proces razvoja programa na aasemblsemblerskom jezikuerskom jeziku

Page 11: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Steps in transforming an assembly Steps in transforming an assembly language program to an executable language program to an executable

program residingprogram residing

Lin

ker

Lo

ad

er

Ass

em

ble

r

add $2,$5,$5 add $2,$2,$2 add $2,$4,$2 lw $15,0($2) lw $16,4($2) sw $16,0($2) sw $15,4($2) jr $31

00a51020 00421020 00821020 8c620000 8cf20004 acf20000 ac620004 03e00008

Assembly language program

Machine language program

Executable machine language program

Memory content

Library routines (machine language)

MIPS, 80x86, PowerPC, etc.

Page 12: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

An assembly language program, its machine-An assembly language program, its machine-language version, and the symbol table created language version, and the symbol table created

during the assembly processduring the assembly process

0 00100000000100000000000000001001

addi $s0,$zero,9

test

done result

12

28 248

4 00000010000100000100000000100010 8 00000001001000000000000000100000 12 00010101000100000000000000001100 16 00100001000010000000000000000001 20 00000010000000000100100000100000 24 00001000000000000000000000000011 28 10101111100010010000000011111000

Determined from assembler directives not shown here

Symbol table

done: sw $t1,result($gp)

sub $t0,$s0,$s0 add $t1,$zero,$zero test: bne $t0,$s0,done addi $t0,$t0,1 add $t1,$s0,$zero j test

Assembly language program Machine language program Location

op rs rt rd sh fn Field boundaries shown to facilitate understanding

Page 13: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Generisanje izvršivih binarnih programa iz Generisanje izvršivih binarnih programa iz skupa nezavisno prevedenih izvornih skupa nezavisno prevedenih izvornih procedura zahteva korišćenje linkera procedura zahteva korišćenje linkera

Page 14: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Kros-aKros-asemblersembler

Punilac, odstranjivač grešaka i program na mašinskom jeziku moraju da se izvršavaju na ciljnoj mašini, dok tekst editor i asembler mogu se izvršavati na drugoj (različitoj) mašini. Asembler koji se izvršava na jednoj mašini, a proizvodi (generiše) objektne module za drugu mašinu zove se kros-asembler (cross-assembler). Proces punjenja (loading) objektnog modula sa mašine na kojoj je izvršeno kros asembliranje u ciljnu mašinu (down load) obično se izvodi serijskom komunikacionom vezom.

Page 15: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

The structure of a typical assembly The structure of a typical assembly language programlanguage program

Constant Definitions

Main Program

Subroutines

Library Definitions

Global Variables

String Constants

Page 16: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Kada programer vrši programiranje na asemblerskom jeziku, on mora strogo da zna :

Asembler nije prenosiv

Svaki mikroračunar ima svoj sopstveni asemblerski jezik koji odražava njegovu sopstvenu arhitekturu.

Asebmlerski program napisan za MC 68020 neće raditi na mikroračunaru zasnovanom na iAPX486 ili bilo kom drugom mikroprocesoru

koji će mikroračunar koristiti

koje registre i instrukcije dotični mikroračunar poseduje

koje adresne načine rada koristi, i puno drugih detalja

Karakteristike asemblerskog jezikaKarakteristike asemblerskog jezika

Page 17: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

asemblerski jezik je jezik kod koga svaka instrukcija generiše tačno jednu mašinsku instrukciju.

postoji korespondencija jedan-prema-jedan izmedju mašinskih instrukcija i instrukcija na asemblerskom programu.

postoji onoliko asemberskih jezika koliko postoji i različitih mikroprocesora

Karakteristike asemblerskog jezika Karakteristike asemblerskog jezika – – produžetak -produžetak -

Page 18: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Za odredjivanje vrednosti algebarskog izraza X=Y+Z kod jednih procesora se koristi instrukcija

Add X,Y,Z

a kod drugih (mikroprocesora) instrukcija

Add Y,Z,X

Sagledavajući ograman broj nedostataka programiranja na asemblerskom jeziku udruženje IEEE oformila je radnu grupu IEEE P 694 koja je imala zadatak da standardizuje mnemonike asemblerskog jezika.

Na žalost preporuke ove grupe nisu široko prihvaćene od strane industrije.

Karakteristike asemblerskog jezikaKarakteristike asemblerskog jezika- nekonzistentnost -- nekonzistentnost -

Page 19: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Nezavisno od toga što su pokušaji standardizacije propali ostali su tragovi tog rada za koje se čini da su prećutno šire prihvaćeni od strane proizvodjača RISC procesora a koji se odnose na: 

specifikaciju imena mnemonika

definiciju tipa modifikatora

uslove grananja

dogovor o korišćenju formata ALU instrukcija

Karakteristike asemblerskog jezikaKarakteristike asemblerskog jezika- pokušaj standardizacije -- pokušaj standardizacije -

Page 20: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

mnemonikmnemonik operacijaoperacijaAdd sabiranje

Sub oduzimanje

Mul množenje

Div deljenje

Inc inkrementiranje

Dec dekrementiranje

Cmp kompariranje

Move kopiranje

Clr brisanje (sadržaja registra)

Ld punjenje (registra iz memorije)

St smeštaj (sadržaja registra u memoriju)

Lda punjenje adreses u registar

Ldm punjenje većeg broja registara

Stm smeštaj većeg broja registara

Shl pomeranje u levo

Shr pomeranje u desno

Br bezuslovno grananje

Bc uslovno grananje

Bal grananje i povezivanje

Bal R grananje na registar i povezivanje

imena najčešće imena najčešće

korišćenih mnemonikakorišćenih mnemonika

KarakteristikKarakteristike e

asemblerskoasemblerskog jezikag jezika

Page 21: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

modifikatormodifikator tip podatkatip podatka

B bajt (8-bitova)

UB neoznačeni bajt (8-bitova)

H polu-reč (16 bitova)

UH neoznačena polu-reč (16-bitova)

W reč (32 bita)

UW neoznačena reč (32-bita)

F pokretni zarez (32-bita)

D dupla preciznost pokretni zarez (64-bita)

C znak ili decimalni broj u 8-bitnom formatu

P decimalni broj u pakovanom (4-bitnom) formatu

Modifikatori koji prate odredjeni tip podataka mogu biti oblika:

Instrukcijom:

Move.W R1,R2 ;kopira sa sadržaj 32 bitnog registra R2 u R1

Karakteristike asemblerskog jezikaKarakteristike asemblerskog jezika- modifikatori za tip podataka -- modifikatori za tip podataka -

Page 22: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

uslovi grananjauslovi grananja

CCCC usloviuslovi

T istinit

F pogrešan

V premašaj

C prenos ili pozajmljivanje

PE parna parnost

PO neparna parnost

LE manji od ili jednak

LT manji od

EQ jednak

NE nije jednak

GE veći od ili jednak

GT veći od

KarakteristiKarakteristike ke

asemblerskasemblerskog jezikaog jezika

Page 23: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

korišćeni formati ALU instrukcijakorišćeni formati ALU instrukcija

slučaj 1 OP.X odredište, izvorište 1, izvorište 2

(tro-operandski format)

slučaj 2 OP.X odredište, izvorište

(samo kada se specificiraju dva operanda)

slučaj 3 OP.X odredište/izvorište 1, izvorište 2

(u ovom slučaju OP koristi dva izvorna operanda, a upisuje rezultat na mesto operanda izvorište 1)

Karakteristike asemblerskog jezikaKarakteristike asemblerskog jezika

Page 24: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Struktura instrukcija na asemblerskom jeziku dosta verno odslikava strukturu mašinskih instrukcija koje on predstavlja

Asemblerski jezici različitih procesora medjusobno su dosta slični

Ova osobina dozvoljava da se o njima u izvesnoj meri diskutira uopšteno

Kada se dobro poznaje jedan asemblerski jezik lako se uči drugi.

Formati asemblerskih instrukcijaFormati asemblerskih instrukcija

Page 25: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Svaki iskaz na asemblerskom jeziku čine sledeća četiri polja: oznaka (labela)

opkôd ili direktiva

operand (i)

komentar

Polja

oznaka

opkôd

i

direktiva

(pseudoinstrukcija)

operand (i) komentar

[< labela >]

<opkôd>

ili

<direktiva >

[<operand 1>[, <operand 2>]] [<komentar>]

Formati asemblerskih instrukcijaFormati asemblerskih instrukcija

Page 26: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Oznaka – za najveći broj instrukcija i direktiva ovo polje je i opciono polje oznaka predstavlja simboličko ime za memorijsku adresu.

Izraz: Move.L B,D0

Izraz definiše lokaciju instrukcije u memoriji nakon što je program napunjen (loadovan).

Oznaka se može koristiti da definiše početak programskog segmenta radi kasnijeg obraćanja.

Oznaka se koristi kod dodela memorije pseudoinstrukcijama jer omogućava da memorisani podaci budu dostupni preko simboličkih imena.

Formati asemblerskih instrukcijaFormati asemblerskih instrukcija- polje oznaka -- polje oznaka -

Page 27: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Polje operacioni kôd ili direktiva sadrži:

mnemonik instrukcije - simboličku skraćenicu za opkôd ako iskaz predstavlja mašinsku instrukciju ili

asemblersku direktivu – tj. pseudoinstrukciju ako je iskaz komanda asembleru

izbor imena za mnemonike i direktive razlikuje se od jednog asemblera do drugog

Primer :Add R1,R2,R3 ;instrukcija

Alfa EQU 50 ;direktiva

Formati asemblerskih instrukcijaFormati asemblerskih instrukcija- polje - polje operacioni kôd ili direktivaoperacioni kôd ili direktiva - -

Page 28: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Operandi - polja operandi u iskazima asemblerskog jezika namenjena su da specificiraju adrese i registre koji se koriste kao operandi u mašinskoj instrukciji.

Polje operand (i) kod instrukcije Add ukazuje šta sa čime treba sabrati.

Polje operand kod Jump (Branch) instrukcije ukazuje gde treba skočiti.

Kod pseudoinstrukcija ovo polje ukazuje koliko memorijskog prostora treba rezervisati.

Asembleri prepoznaju i odredjene simbole u polju operand (i). Simbolu može da se dodeli apsolutna adresa, neposredna vrednost, ili bilo koji drugi važeći operand.

Formati asemblerskih instrukcijaFormati asemblerskih instrukcija- polje - polje operandioperandi - -

Page 29: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Izraz (expression) predstavlja kombinaciju simbola, konstanti (literali), algebarskih operatora i zagrada, a koristi se od strane asemblera za odredjivanje adresa ili vrednosti operanada.

Instrukcijom

Move.W # $ 2000, D1

definiše se 16-bitna heksadecimalna vrednost 2000 kao neposredni izvorni operand.

Konstante za koje asembler automatski rezerviše memorijski prostor zovemo literali.

Primer :

Formati asemblerskih instrukcijaFormati asemblerskih instrukcija- polje - polje operandi - produžetakoperandi - produžetak

Page 30: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Alternativno ime je asemblerske pseudoinstrukcije

Najveći broj asemblera pruža pomoć programeru na različite načine putem korišćenja asemberskih direktiva

Akcija koja se preuzima od strane direktiva egzistira samo u toku asembliranja izvornog programa, tj. direktive su neizvršive asemblerske instrukcije

Direktive su instrukcije namenjene asembleru, a ne procesoru

Asemblerske direktiveAsemblerske direktive

Page 31: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Asemblerske direktiveAsemblerske direktive - primer - primer

Assembler directives provide the assembler with info on how to translate the program but do not lead to the generation of machine instructions

.macro # start macro .end_macro # end macro

.text # start program’s text segment ... # program text goes here .data # start program’s data segment tiny: .byte 156,0x7a # name & initialize data byte(s) max: .word 35000 # name & initialize data word(s)small: .float 2E-3 # name short float big: .double 2E-3 # name long float .align 2 # align next item on word boundaryarray: .space 600 # reserve 600 bytes = 150 words str1: .ascii “a*b” # name & initialize ASCII string str2: .asciiz “xyz” # null-terminated ASCII string .global main # consider “main” a global name

Page 32: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Asemblerske direktiveAsemblerske direktive - primer - primer

Write assembler directive to achieve each of the following objectives:

a. Put the error message “Warning: The printer is out of paper!” in memory.b. Set up a constant called “size” with the value 4.c. Set up an integer variable called “width” and initialize it to 4.d. Set up a constant called “mill” with the value 1,000,000 (one million).e. Reserve space for an integer vector “vect” of length 250.

Solution:

a. noppr: .asciiz “Warning: The printer is out of paper!”b. size: .byte 4 # small constant fits in one bytec. width: .word 4 # byte could be enough, but ...d. mill: .word 1000000 # constant too large for bytee. vect: .space 1000 # 250 words = 1000 bytes

Page 33: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

tiptip opkopkôôdd komentarkomentar

upravljanje asembliranjem

Org<izraz> početak programske sekvence

End kraj programa koji se asemblira

definicija simbola

<oznaka> Equ<izraz> izjednačava simboličko ime (na poziciji oznaka) sa vrednošću operanda

definisanje podataka i memorijskog prostora

[<oznaka>] DC.<I> <vrednost(i)> definiše konstantu(e) tj. memoriše vrednosti operanda kao konstante

[<oznaka>] DS.<I> <vrednost(i)> rezerviše memorijski prostor

makro

definicije

Macro početak makro definicije

Endm kraj makro definicije

upravljanje listingom

Lien dužina linije

List listanje

NoList nema listanja

Spc<N> <N> blanko linija

Page naredna stranica

ostale

Title koristi operand kao naslov na svakoj stranici listinga

If početak asembliranja uslovnog bloka instrukcije samo ako je specificirani uslov ispunjen

Endif kraj uslovnog bloka

Page 34: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Proces asembliranja, kao aktivnost, je dovoljno sličan i može se kao postupak opisati da važi za sve mašine, tj. bude generalni

Asembliranje možemo da zamislimo na sledeći način:

program na asemblerskom jeziku predstavlja niz iskaza

asembler u datom trenutku čita jedan iskaz, prevodi ga u mašinski jezik, a na svom izlazu generiše dva tipa informacija:

odnosi se na generisani mašinski kôd i pridružuje se datoteci u kojoj se čuva izvršivi mašinski kôd,

dodaje se odgovarajućem delu listing datoteke koja se koristi za potrebe štampanja.

Proces se ponavlja dok se ne prevede ceo program.

Proces asembliranjaProces asembliranja

Page 35: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Na prvi pogled veoma logičan postupak koji na žalost nije korektan. Zbog čega?

Analizirajmo sledeću situaciju:

Neka prvi iskaz u programu koji se prevodi bude Jump Adr_1. Asembler neće biti u stanju da asemblira ovaj iskaz sve dok nezna adresu Adr_1. Skok može biti na kraju programa koji se prevodi, što znači da asembler neće biti u stanju da pronadje adresu ako se prethodno ne pročita ceo program.

Ovaj problem je poznat kao obraćanje unapred (forward reference) a javlja se zbog toga što se simbol Adr_1 javlja pre nego što je definisan, tj. obraćamo se simbolu čija definicja sledi kasnije.

Proces asembliranja Proces asembliranja - produžetak- produžetak

Page 36: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Asembler čita izvorni program dva puta. Pri ovome svako čitanje izvornog programa zovemo prolaz (pass). Bilo koji prevodilac koji čita ulazni program dva puta zove se dvo-prolazni prevodilac.

U toku prvog prolaza, kod dvo prolaznog asemblera, skupljaju se i smeštaju u tabeli definicije simbola i oznake (labele) iskaza.

U toku drugog prolaza vrednosti svih simbola su poznate, problem obraćanja unapred nije više kritičan, svaki iskaz se čita, asemblira i generiše njegov izlaz.

Problem obraćanja unapred Problem obraćanja unapred – prvi – prvi pristuppristup

Page 37: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Drugi pristup se zasniva na jednom prolazu. Ideja je sledeća :

Kada se naidje na iskaz koji se ne može asemblirati zbog toga što postoji obraćanje unapred ne generiše se izlaz. Umesto toga kreira se ulaz u (jednoj) tabeli čiji sadržaj ukazuje to da iskaz kod koga se javlja obraćanje unapred nije asembliran. Na kraju procesa asembliranja svi iskazi u neasembliranoj tabeli se asembliraju.

Nedostaci:

dvo prolaznog asemblera ogleda se u tome što zahteva nešto duže vreme prevodjenja

jedno prolaznog: (a) dodatni memorijski prostor, koji može biti veliki ako u programu postoji veliki broj obraćanja unapred; (b) složenija struktura; i (c) razumljivost listinga objektnog koda nije uvek najjasnija. Zbog nabrojanih razloga najveći broj asemblera je dvo prolazni.

Problem obraćanja unapred Problem obraćanja unapred – drugi – drugi pristuppristup

Page 38: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Glavna aktivnost koja se obavlja u toku prvog prolaza u vezi je sa kreiranjem tabele simbola. U tabeli se čuvaju vrednosti svih simbola. Simbol može biti: (a) oznaka (labela); i (b) vrednost kojoj je pomoću direktiva dodeljeno simbolično ime, kao na primer :

DISK_1 Equ 18

Kada simbol pripada polju Oznaka asembler mora da zna, koju adresu treba da dodeli toj instrukciji u toku izvršenja programa. Da bi sačuvao adresni trag o svim asembliranim instrukcija asembler mora u svakom ulazu tabele simbola da pamti vrednost jedne promenljive koja se zove lokacioni brojač instrukcija (instruction location counter - ILC). Na početku prvog prolaza asembler postavi ILC na vrednost 0. Nakon obrade svake instrukcije ILC se inkrementira za dužinu te instrukcije.

Prvi prolazPrvi prolaz

Page 39: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Tabela simbola - ima po jedan ulaz za svaki simbol

Simboli su definisani bilo kao oznake (labele) ili preko definicija (Januar Equ 1)

Svaka tabela simbola sadrži sam simbol (ili pokazivač na taj simbol), njegovu numeričku vrednost i dodatnu informaciju koja se odnosi na :

Tabela simbolaTabela simbola

dužinu polja podatka koje prati taj simbol, relokacione bitove, tj. da li simbol menja vrednost

ako se program puni na neku drugu adresu u odnosu na onu koja je specificirana asemblerom

da li je ili ne simbol dostupan van granica procedure.

Page 40: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Opkôd tabela - sadrži najmanje jedan ulaz za svaki mnemonik asemblerskog jezika

Svaki ulaz opkôd tabele sadrži :

simbolički opkôd (mnemonik)

dva operanda

dužinu instrukcije

klasu instrukcije koja deli opkodove u grupe u zavisnosti od broja i tipova operanada

Opkôd tabelaOpkôd tabela

Page 41: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

U ovom prolazu obavljaju se sledeće aktivnosti:

generiše se objektni program

štampa se listing na asemblerskom jeziku ako se to zahteva

generiše se dodatna informacija koja je potrebna programu za povezivanje (linkeru) radi povezivanja procedura koje se asembliraju u različitim vremenskim trenucima

Drugi prolazDrugi prolaz

Page 42: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

PseudoinstrukcijePseudoinstrukcije

Example of one-to-one pseudoinstruction: The following

not $s0 # complement ($s0)

is converted to the real instruction:

nor $s0,$s0,$zero # complement ($s0)

Example of one-to-several pseudoinstruction: The following

abs $t0,$s0 # put |($s0)| into $t0

is converted to the sequence of real instructions:

add $t0,$s0,$zero # copy x into $t0slt $at,$t0,$zero # is x negative?beq $at,$zero,+4 # if not, skip next instrsub $t0,$zero,$s0 # the result is 0 – x

Page 43: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

PseudoinstrukcijePseudoinstrukcije

MiniMIPS Pseudo-

instructions

Pseudoinstruction UsageMove move regd,regs

Load address  la regd,address

Load immediate li regd,anyimm

Absolute value abs regd,regs

Negate neg regd,regs

Multiply (into register) mul regd,reg1,reg2

Divide (into register) div regd,reg1,reg2

Remainder rem regd,reg1,reg2

Set greater than sgt regd,reg1,reg2

Set less or equal sle regd,reg1,reg2

Set greater or equal sge regd,reg1,reg2

Rotate left rol regd,reg1,reg2

Rotate right ror regd,reg1,reg2

NOT not reg

Load doubleword ld regd,address

Store doubleword sd regd,address

Branch less than blt reg1,reg2,L

Branch greater than bgt reg1,reg2,L

Branch less or equal ble reg1,reg2,L

Branch greater or equal bge reg1,reg2,L

Copy

Control transfer

Shift

Arithmetic

Memory access

Logic

Page 44: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Programeri često imaju potrebu da nekoliko puta u okviru programa ponavljaju odredjene sekvence

Najjednostavnije ovoj problem se rešava tako što se sekvenca instrukcija kad god zatreba prepiše

Ako je sekvenca dugačka, ili se često ponavlja, ovaj posao postaje zaista dosadan

Kao alternative se nude sledeća dva rešenja koja se baziraju na grupisanju instrukcija u jedinstvenu celinu :

makro naredbe

potprogrami (procedure)

Makro naredbe i potprogramiMakro naredbe i potprogrami

Page 45: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Obe strategije ima svoje prednosti i nedostatke

Kod poziva procedure izvršavaju instrukcije Call i Return

Ako je procedura kratka, a poziv procedure česti, izvršenje instrukcija Call i Return u značajnoj meri usporava brzinu izvršenja programa

Makro naredbe obezbedjuju efikasnije rešenje problema učestalog izvršenja iste ili skoro iste sekvence instrukcija

Nedostatak makro naredbe se ogleda u povećanju obima programa.

Makro naredbe i potprogrami - Makro naredbe i potprogrami - produžetakprodužetak

Page 46: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Makro mehanizamMakro mehanizam

A macro is a mechanism to give a name to an oft-used sequence of instructions (shorthand notation)

.macro name(args) # macro and arguments named ... # instr’s defining the macro .end_macro # macro terminator

How is a macro different from a pseudoinstruction?

Pseudos are predefined, fixed, and look like machine instructions Macros are user-defined and resemble procedures (have arguments)

How is a macro different from a procedure?

Control is transferred to and returns from a procedure After a macro has been replaced, no trace of it remains

Page 47: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Macro – largest of three valuesMacro – largest of three values

Write a macro to determine the largest of three values in registers and to put the result in a fourth register.

Solution:

.macro mx3r(m,a1,a2,a3) # macro and arguments named move m,a1 # assume (a1) is largest; m = (a1) bge m,a2,+4 # if (a2) is not larger, ignore it move m,a2 # else set m = (a2) bge m,a3,+4 # if (a3) is not larger, ignore it move m,a3 # else set m = (a3) .endmacro # macro terminator

If the macro is used as mx3r($t0,$s0,$s4,$s3), the assembler replaces the arguments m, a1, a2, a3 with $t0, $s0, $s4, $s3, respectively.

Page 48: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Razlika izmedju mRazlika izmedju makro naredbi akro naredbi i i potprogrampotprogramaa

GLPR

CALL PP1

CALL PP2

CALL PP2

......

......

PP1

PP1

10 k

1 k

2 k

rad sa potprogramima Ukupna dužina programa

• jednaka je zbiru

• i nezavisna je od toga koliko se puta u toku izvršenja glavnog programa pozivaju potprogrami.

• U konkretnom slučaju jednaka je 13 k.

n

iiPPGLPR

1

Page 49: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Razlika izmedju mRazlika izmedju makro naredbi akro naredbi i i potprogrampotprogramaa

rad sa makroima Ukupna dužina programa

• jednaka je zbiru

gde je pi broj puta pozivanja makroa i u okviru glavnog programa

• Dužina programa zavisna je od toga koliko se puta u toku izvršenja glavnog programa pozivaju makroi.

• U konkretnom slučaju jednaka je 15 k.

MAKROnp...MAKROp

MAKROpGLPR

n

2

1

2

1

GLPR

MAKRO1

MAKRO2

MAKRO2

......

......

MAKRO1

MAKRO2

10 k

1 k

2 k

Ukupniprogram

MAKRO1

......

......

15 k

MAKRO2

MAKRO2

na mestu poziva ceo MAKRO se umeće u kôd glavnog programa

Page 50: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Veliki broj asemblerskih jezika je proširljiv

Asembleri dozvoljavaju korisniku da definiše nove instrukcione mnemonike koje zovemo makro naredbe

Makro naredbe se mogu smatrati kao sastavni deo jezika, pa se kao takve i mogu pozivati

Novo definisane instrukcije mogu se koristiti potpuno ravnopravno sa svim ostalim instrukcijama iz skupa instrukcija na asemlerskom jeziku

Makro naredba predstavlja sekvencu mašinskih instrukcija koja se definiše jedanput, a može se koristiti po nekoliko puta u toku izvornog programa.

Makro naredbeMakro naredbe

Page 51: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Definicija makro naredbe liči na definiciju procedure

Procedure i makro naredbe nisu isto

Razlika se ogleda u sledećem :

korišćenjem makro naredbi ne štedi se memorijski prostor

na mestima na kojima se poziva marko naredba ubacije se sekvenca mašinskih instrukcija, koje čine makro naredbe, čime se obim programa povećava

makro naredbe nije potrebno povezivati, tj. linkovati.

makro naredbe su pogodnije za primenu kada se u toku programa javljaju kratke celine po nekoliko puta, a procedure kada su celine duže.

Makro naredbe - Makro naredbe - produžetakprodužetak

Page 52: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Definicija makro naredbe predstavlja metod dodele imena delu programa

Različiti asembleri koriste različitu notaciju kod definicje makro naredbi

Nezavisno od detalja svi imaju sledeće tri osnovne celine:

zaglavlje u kome se javlja ime makro naredbe koja se definiše,

tekst koji čini telo makro naredbe,

direktiva koja se odnosi na kraj definicije.

Definicija makro naredbeDefinicija makro naredbe

Page 53: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

ime Makro operand, . . . , operand

.

. telo makro naredbe .

Endm

Tri celine kod definicije makro Tri celine kod definicije makro naredbenaredbe

Page 54: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Kada se ime makro naredbe koristi kao opkôd tada je ono poznato kao makro poziv a njegova ekspanzija telom makro naredbe zove se makro ekspanzija

Definicija makroa uključuje zadavanje formalnih parametara, a makro pozivom se predaju aktuelni parametri.

Makro naredbe - Makro naredbe - produžetakprodužetak

Page 55: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Korišćenjem procedure može da poboljša čitljivost, pisanje, i održavanje velikih programa

Procedure takodje smanjuju veličinu programa jer je njihov kôd deljiv, tj. zajednički za veći broj programa

Upotreba procedura je takodje svojstvena kod uvodjenja novih programskih tehnika kao što je rekurzivno programiranje čime se u značajnoj meri smanjuju napori programera kod realizacije odredjenih algoritama

Lako prepoznajemo korišćenje procedura u skoro svim programima koje danas srećemo.

Procedura je osnovna programska jedinica kod najvećeg broja HLL-ova.

ProcedureProcedure

Page 56: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

implementacija procedura podrazumeva upravljanje nekim strukturama podataka koje zbog poziva procedura unose dodatno vremensko prekoračenje, tj. usporavaju brzinu izvršenja programa

savremeni mikroprocesori poseduju specijalne instrukcije koje izvode ove aktivnosti, a njihov efekat se ogleda u poboljšanju performansi

Procedure - Procedure - produžetakprodužetak

Page 57: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Prenos parametara proceduri (preko magacina, registara, itd)

Predaja upravljanja željenoj proceduri

Dodela prostora radi memorisanja lokalno promenljivih,

Pamćenje konteksta programa iz koga je izvršen poziv,

Pristup parametrima u toku izvršenja procedure,

Obnavljanje konteksta programa iz koga je izvršen poziv,

Oslobadjanje prostora koji je bio rezervisan za memorisanje lokalno promenljivih,

Izbavljanje parametara (iz magacina, registara, itd),

Vraćanje upravljanja programu iz koga je izvršen poziv.

Aktivnosti kod poziva proceduraAktivnosti kod poziva procedura

Page 58: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

procedure P(X : integer; var y : integer);

var z : integer;

begin

.

y:=z+x

.

end;

program (glavni)

.

P(A,B);

.

end 

Primer korišćenja procedura kod Primer korišćenja procedura kod PascalaPascala

Page 59: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Metod prenosa upravljanje izmedju programa iz koga je izvršen poziv i potprograma zove se povezivanje potprograma (subroutine linkage)

Informacija koja je potrebna potprogramu definiše se u zavisnosti od parametara

Definicaija procedure uključuje formalne ili fiktivne parametre, a pozivom procedure se predaju aktuelni ili stvarni parametri

Alternativno formalne parametre zovemo parametri, a za stvarne parametre se koristi termin argumenti

Prenos upravljanja izmedju Prenos upravljanja izmedju programa i potprogramaprograma i potprograma

Page 60: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

tip opis komentar

registarski rutina iz koje se vrši poziv puni unapred definisane registre vrednostima ili adresama

• broj parametara je ograničen

• predaja je dinamička

magacin

adresa iz koje se vrši poziv smešta vrednosti ili adrese magacina

• adresa povratka u toku obrade mora biti sačuvana, a obnovljena pre povrataka

• predaja dinamička

parametarske oblasti

definišu se oblasti u memoriji u kojima se čuvaju vrednosti ili adrese

• predaja statička , ako su oblasti definisane u toku asembliranja,

• predaja je dinamička ako se bazna adresa oblasti predaje u registru

in line vrednosti ili adrese se memorišu nakon instrukcije za poziv potprograma. Potprogram izračunava lokacije parametara

• predaja je statička

Tehnike za prenos vrednosti ili Tehnike za prenos vrednosti ili adresa adresa

Page 61: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Argumenti koji se predaju potprogramu zove se ulazni parametri

Dobijeni rezultati u formi vrednosti ili adrese odgovaraju izlaznim parametrima potprograma

Parametri koji se prenose izmedju pozivnog i pozvanog programa mogu se predavati kao:

vrednosti (by value) - pozvanom programu se predaje stvarna vrednost

adrese (by reference) - stvarni parametar se predaje kao adresa

Tipovi argumenata i parametri koji Tipovi argumenata i parametri koji se prenosese prenose

Page 62: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Najjednostavniji metod za prenos argumenata

Podaci se predaju preko internih registara CPU-a

Brzi prenos podataka

Broj argumenata koji se može preneti je ograničen brojem dostupnih registara

Projektanti oba programa moraju prethodno da se dogovore preko kojih registara će se prenosti argumenti

Registerski prenosRegisterski prenos

Page 63: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Primer :Primer :

Sledećom sekvencom instrukcija (važi za MC 68020)

.

Move.L vred_1,D1 ; prenos vrednosti

Move.L adr_x,A1 ; prenos adrese

Lea zaglav, A2 ; adresa zaglavlja

Jsr PP_1 ; poziv potprograma

.

postavlja se 32-bitna vrednost u D1, adresa pokazivača na lokaciju adrese u A1, a adresa zaglav u A2. Potprogram PP_1 može kada obavlja svoju funkciju direktno da pristupa registrima

Registerski prenosRegisterski prenos

Page 64: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Argumenti se smeštaju u magacin pre nego što se izvrši poziv potprograma

Kod smeštanja podataka u magacin registar SP se prvo dekrementira, za vrednost koja je odredjena obimom podatka koga treba zapamtiti, a nakon toga se memoriše podatak

Prenos preko magacinaPrenos preko magacina

Page 65: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Primer :Primer :

Argumenti se smeštaju u magacin pre nego što se izvrši poziv potprograma na sledeći način:

.

Move.L vred_1,(SP) ; smešta se prvi podatak

Move.W vred_2,(SP) ; smešta se drugi podatak

Jsr PP_A ; poziv potprograma PP_A

.

na vrh magacina pokazuje registar SP

registar SP uvek pokazuje na punu lokaciju

Prenos preko magacinaPrenos preko magacina

Page 66: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Primer :Primer :

Sekvenca instrukcija, mikroprocesora MC68020, koja obavlja ovu aktivnost ima sledeći oblik:

PP_A: Move.L (SP)+,A1 ;privremeno sačuvaj (PC) u A1

Move.W (SP)+,D1 ;smesti vred_2 u D1

Move.L (SP)+,D2 ;smesti vred_1 u D1

.

. telo potprograma PP_A

.

Move.L (A1),(SP) ;smesti (PC) u magacin

Rts ;povratak iz potprograma

Prenos preko magacinaPrenos preko magacina

Page 67: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Prednosti :

Nedostaci :

broj argumenata koji se prenosi mo`e biti veliki

metoda je univerzalna jer magacin poseduju svi procesori

ova metoda prenosa argumenata koristi se od strane velikog broja kompilatora, kakvi su C, Pascal, i dr.

s obzirom da se pristupa memorijskim lokacijama prenos je sporiji u odnosu na registarski

ako je broj poziva potprograma ili broj podataka koji se prenosi veliki, a dodeljen prostor magacinu mali, tada može da dodje do prekoračenja opsega magacina. Ovo neminovno dovodi do gubitaka podataka, a time i do kraha rada sistema.

Prenos preko magacina - Prenos preko magacina - produžetakprodužetak

Page 68: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Kada je broj parametara koji se prenosi veliki, parametarsku oblast je bolje postaviti u memoriji

Ova oblast sadrži, po unapred odredjenoj sekvenci, vrednosti ili adrese kojima se pristupa od strane potprograma nakon što je njemu predata početna adresa ove oblasti

Ista oblast se može koristiti od strane nekoliko potprograma pod uslovom da je ona dovoljno velika da može čuvati sve podatke

Potprogram može da pristupa vrednostima koristeći indirektno adresiranje sa razmeštajem

Prenos podataka preko memorijskih Prenos podataka preko memorijskih lokacijalokacija

Page 69: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Sekvenca za prenos pet podataka preko memorijskih lokacija, za mikroprocesor MC 68020, imaće oblik

.

Move.L vred_1, memo_ob ; smeštaj prvog podatka

Move.W vred_2, memo_ob+4 ; smeštaj drugog podatka

Move.W vred_3, memo_ob+6 ; smeštaj trećeg podatka

Move.L vred_4, memo_ob+8 ; smeštaj četvrtog podatka

Move.W vred_5, memo_ob+12 ; smeštaj petog podatka

Lea memo_ob, A1 ; smesti adresu oblasti u A1

Jsr PP_2 ; poziv potprograma

Primer :Primer :

Prenos podataka preko memorijskih Prenos podataka preko memorijskih lokacijalokacija

Page 70: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

.

memo_ob: DS.L 1 ; rezervacija prostora

DS.W 2

DS.L 1

DS.W 1

End 

instrukcijom

Move.L (8,A1),D1

vrši se prenos vred_4 u D1

definisanje parametarske oblasti se može obaviti na veći broj načina

Primer -produžetak:Primer -produžetak:

Page 71: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Metod za prenos vrednosti potprogramu zasniva se na kôdiranju vrednosti koja sledi nakon poziva potprograma

Ovaj metod se zove in-line kodiranje i definiše vrednosti argumenata koje su konstante i ne menjaju se nakon asembliranja

""In-lineIn-line" kodiranje" kodiranje

Page 72: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Sekvencom instrukcija:

Jsr PP_3 ; poziv potprograma PP_3

DC.W 1 ; in line argument

32-bitna vrednost PC-a koja se smešta u sistemski magacin nakon poziva potprograma ukazuje na lokaciju argumenta u instrukcionoj sekvenci.

Primer :Primer :

""In-lineIn-line" kodiranje" kodiranje

Page 73: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Sledećom sekvencom koja je deo potprograma PP_3, smeštamo argumet u LS deo registra D1, a zatim u magacin smeštamo povratnu adresu koja se nalazi iza konstante :

Move.L (SP), A0 ; izbavi (PC) i smesti ga u A0

Move.W (A0)+, D1 ; pribavi argumet i inkrementiraj A0

Move.L A0, (SP) ; smesti novu povratnu adresu

.

. telo potprograma PP_3

.

Rts ; povratak iz potprograma

Primer :Primer :

""In-lineIn-line" kodiranje" kodiranje

Page 74: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Kreiranje i dokumentovanje programa je od izuzetne važnosti za programere

Promena funkcionalnih zahteva nekog programskog modula iziskuje modifikaciju prethodno kreiranog kôda

Dobro dokumentovani program može da uštedi mnogo vremena koje je potrebno za analizu postojećeg kôda

Svaka organizacija na jedinstven način formira svoj sopstveni standard o vodjenju dokumentacije

Projektovanje modularnih programa Projektovanje modularnih programa i dokumentacijai dokumentacija

Page 75: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Ključne komponente, minimalnog standarda koga treba ispoštovati, su :

funkcionalni opis

algoritamski opis

tabela o korišćenju registara

in line dokumentacija

Projektovanje modularnih programa Projektovanje modularnih programa i dokumentacija - i dokumentacija - produžetakprodužetak

Page 76: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Funkcionalni opis: opisuje šta odredjena funkcija obavlja, ali ne daje informaciju kako se ta funkcija izvršava

Funkcionalni opis mora da objasni na koji način se argumenti prenose toj funkciji, i na koji način se rezultati vraćaju (ako postoje)

Funkcionalni opisFunkcionalni opis

Page 77: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Primer:Primer: Hexout (R1 : vrednost)32-bitna binarna vrednost se prenosi funkciji u registru R1, a heksadecimalna vrednost se štampa sa desnim poravnjanjem.

Decout (R1 : vrednost)32-bitna binarna vrednost se prenosi funkciji u registru R1, a decimalna vrednost se štampa sa desnim poravnjanjem.

Decin (R1 : vrednost, R2 : status)Čita se niz decimalnih cifara sa tastature i vraća 32-bitni binarni ekvivalenat u registar R1. Ako niz ne predstavlja na korektan način decimalni broj tada se vrednost "1" kao tip statusne greške vraća u registar R2, inače, kada je decimalni broj važeći, u registar R2 se vraća vrednost "0".

Hexin ( niz, vrednost)Analizira se niz ASCII karaktera koji predstavlja heksadecimalni broj i vraća se 32-bitna binarna ekvivalentna vrednost u magacin na lokaciji MemSP-4. Pokazivač na niz se prenosi funkciji preko magacina na lokaciji MemSP. Nakon povratka, pokazivač u MemSP pokazivaće na bajt koji sledi nakon zadnje heksadecimalne cifre u nizu.

Funkcionalni opisFunkcionalni opis

Page 78: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Pseudokôd: objašnjava na koji način se implementira funkcija

svaki programer kome se dodeljuje zadatak da modifikuje kôd izuzetno je zainteresovan za logičku strukturu postojećeg kôda

obično logičku strukturu kôda lakše je razumeti ako se koristi neka HLL notacija

korišćenje HL pseudokôda od izuzetne je važnosti u toku inicijalnog razvoja kôdnog modula kao i od velike pomoći programeru koji se bavi održavanjem

pseudokôd olakšava saradnju individua zaduženih za modifikacije, a takodje i olakšava debagiranje

na osnovu svega izloženog, preporučuje se da, pseudokôd bude sastavni deo dokumentacije programa na asemblerskom jeziku

Algoritamski opisAlgoritamski opis

Page 79: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

; #####################################################################; Ime programa: Suma integer vrednosti; Programer: Mika Rus; Datum zadnje modifikacije: 12.01.2004.; #####################################################################

Jedan tipičan primer koji uključuje funkcionalni opis kao i opis algoritma na nivou pseudokôda imao bi sledeći oblik :

Primer :Primer :

Algoritamski opisAlgoritamski opis

Page 80: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

################################################################; Funkcionalni opis: ; Program odredjuje sumu celobrojnih vrednosti (integer) od 1 do N, gde je; N vrednost koja se prihvata (čita) sa tastature; ###############################################################; Opis algoritma na pseudokod nivou

; main: cout << "\n Uneti ulaznu vrednost za N = "cin >> v0if (v0 > 0)t0 = 0;while (v0 > 0) do t0 = t0 + v0;v0 = v0 - 1cout << "Zbir integer-a od 1 do N je", t0;go to main;elsecout << "\n Ovo je kraj opisa"

; ###############################################################

Algoritamski opisAlgoritamski opis

Page 81: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Tabela o korišćenju registara: U okviru granica algoritma ovom tabelom se definiše način korišćenja svakog od registara procesora i premošćava se jaz izmedju opisnih imena promenljivih i odgovarajućih registara procesora

Tabela o korišćenju registaraTabela o korišćenju registara

Page 82: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Primer :Primer :

Jedan tipičan primer zaglavlja glavnog programa koji koristi tabelu o korišćenju registara bio bi sledećeg oblika:;####################Primer zaglavlja glavnog programa###############; Program 1: <opisno ime> ; Programer: <ime i prezime>; Dan kreiranja: dan, mesec, godina; Zadnja modifikacija: dan, mesec, godina ; ###############################################################; Funkcionalni opis programa; Sledi kratak opis programa; ###############################################################; Korišćenje registara u glavnom programu; R1 = početna adresa niza .........................; R2 = vrednost koja se dobija sabiranjem .......................; ###############################################################; Opis pseudokoda; ###############################################################

Tabela o korišćenju registaraTabela o korišćenju registara

Page 83: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Primer :Primer :

Drugi tipični primer koji bi se odnosio na opis funkcije bio bi sledećeg oblika:; #################### Primer zaglavlja funkcije #####################; Ime funkcije: <opisno ime> ; Programer: <ime i prezime>; Dan kreiranja: dan, mesec, godina; Zadnja modifikacija: dan, mesec, godina ; ##################################################################; Funkcionalni opis: ; Sledi kratak opis:; ##################################################################; Objašnjenje koji se parametri prenose funkciji i na koji način; R1 = pokazivač niza u memoriji ; Objašnjenje koje se vrednosti vraćaju od strane funkcije i kako ; R2 = binarna vrednost rezultata izračunavanja; R3 = vrednost statusa, "1" - rezultat ima korektnu vrednost, "0" - rezultat nema ; korektnu vrednost

; Primer pozivne sekvence:

; <prikaz prenosa parametara preko registara, magacina, .........>

; JSR xxxx poziv potprograma

; <povratak na ovo mesto .............>; ##################################################################

; Način korišćenja registara u funkciji:

; R5 = adresa lokacije ..................

; R6 = privremena suma; ##################################################################; Algoritamski opis na nivou pseudokoda:; sledi opis; ##################################################################

Tabela o Tabela o korišćenjkorišćenj

u u registararegistara

Page 84: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

In line dokumentacija: Ovaj tip dokumentacije je od velike koristi u fazi identifikacije koju aktivnost svaki od blokova na asemblerskom jeziku obavlja

"In line""In line" dokumentacija dokumentacija

Page 85: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Primer :Primer :

Jedan tipičan primer korišćenja in line dokumentacije je sledeći:

Andi R3,R1,1 ; maskiraj LSB registra R1 i smesti vrednost ; u registar R3

Beqz R3,parno ; ako je LSB=0 skoči na parnoAddi R2,R2,1 ; inkrementiraj brojač neparno za 1parno: ......

"In line""In line" dokumentacija dokumentacija

Page 86: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Svaki modul ima

sopstveni adresni prostor, počev od adrese 0

Page 87: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

a) Pozicioniranje objektnih modula u binarnoj slici pre relokacije i linkovanja

b) Objektni moduli nakon linkovanja i relokacije

Page 88: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Adresni prostor nakon linkovanja- za prethodni slajd -

Page 89: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Interna struktura objektnog modula generisanog od strane prevodioca

Page 90: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Relocirani binarni program sa prethodnih

slajdova pomeren za 300 adresa

naviše

Veliki broj instrukcija ukazuje na nekorektne memorijske adrese.

Page 91: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Dinamičko povezivanje

a) Pre poziva EARTH

b) Nakon poziva i linkovanja EARTH

Page 92: Uvod u asemblerski jezik VI poglavlje  - Karakteristike –

Korišćenje DLL fajla od strane dva procesa