p1.2 poglavlje 2 - projektovanje makroasemblera
TRANSCRIPT
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
1/23
1
PROJEKTOVANJEMAKROASEMBLERA
MakroasemblerPotrebna proširenja asemblera
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
2/23
2
MAKROASEMBLER Makroasembler prevodi polazni program
napisan na makroasemblerskom jezikuu izvršivi mašinski program.Prilikom izrade asemblerskog programačesto se delovi programa ponavljajuviše puta.Uvodi se otvoreni potprogram, koji senaziva MAKRO DEFINICIJOM, a pozivase MAKRO INSTRUKCIJOM.
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
3/23
3
MAKROASEMBLERSKI JEZIK Osobine Jezik višeg nivoa
Uz zadržavanje prednosti asembleraMogućnost standardizacije
Tretira se kao proširenje asembleraPrimene Opisivanje operativnog sistema (OS)
Generisanje OS makro preprocesiranjem Simboličke mašinske instrukcije nove
apstraktne mašine, npr. save, restore, itd.
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
4/23
4
MAKROI U VIŠIM
PROGRAMSKIM JEZICIMAMakro iskazi (makroi) postoje i u višim
programskim jezicimaNpr. u jeziku C Direktive C makro preprocesora
#include, #ifdef, #endif, itd.Makroi se definišu pomoću #define
Npr. #define MAX(A,B) ((A)>(B): (A) ? (B)) Makro MAX(x,y) se razvija u ((x)>(y)? (x) : (y)) Pažnja: makroi sa ivičnim efektima! Npr. MAX(i++, j++), će veći brojač povećati za dva,
a ne za 1
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
5/23
5
Proširenja asemblera radi
obrade makroinstrukcija:Prvo: da prepozna makroinstrukciju.
Drugo: da proširi makroinstrukciju.Da bi to uradio on najpre treba da
pronađe i sačuva makrodefiniciju kojaodgovara makroinstrukciji.Makro definicija započinje MACRO, a
završava sa ENDM pseudo instrukcijom.
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
6/23
6
Prepoznavanje
makroinstrukcija:Prepoznavanjem pseudo operacije
MACRO – ime je u polju labeleNajprostiji način: dodati vrstu u tabeli
koda operacije. Ova vrsta sadrži naziv makro instrukcije i
ukazivač na odgovarajuću makro definiciju.
Definicije makroa se čuvaju u TABELIMAKRO DEFINICIJA.
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
7/23
7
BDA obrade
makrodef.:
START
NE
DA
ITMD=0
MAKROPSEUDO
FORMIRANJE DAT. KOPIJE IOTVARANJE RADI UPISA
ODREĐIVANJE POZICIJA NAZIVA KODA
OPERACIJE I POLJA OPERANDA
MNEMKOD?
OSTALEPSEUDOOPER.?
GREŠKANE
NE
DADA
OBRADASIMBOLIČKE
MAŠINSKEINSTRUKCIJE
OBRADAPSEUDO
INSTRUKCIJE
DODAJ NOVU VRSTU U TABELU
KODOVA OPERACIJA:- SIMBOLIČKI KOD = NAZIV- TIP = MAKRO INSTRUKCIJA- NUM. KOD = ITMD- ITMD = ITMD + 1
ENDNE
DA
II PROLAZ
- UNOS NAZIVA MAKRO DEFINICIJE U TMD- UNOS LISTE ARGUMENATA U TMD
- UČITAVANJE NAREDNE LINIJE IZA MAKRONAREDBE- UNOS INDEKSA ZA ARGUMENTE- UNOS REDA U TMD
ČITANJE LINIJE ULAZNOG PROG.S(0), . . . . , S(80)
MKRAJ
DA
NE
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
8/23
8
Obrada makro definicije Vrsta tabele KOP sadrži simbolički KOP, njegov tip, odgovarajući
numerički kod i tip njegovih operanada Makro nema numerički kod
Tu se smešta indeks odgovarajućemakrodefiniciju u tabeli makro definicija (TMD)
Zadnji elemenat, tip operanda, nije bitan za
makro instrukciju
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
9/23
9
Primer TMDSmešta se cela makro definicije Sve simboličke instrukcije unutar nje u
redosledu u kome su se pojavili u proceduripolaznog jezika
INDEKS TABELA MAKRO DEFINICIJE (TMD)
15 ADDUP MACRO
ADD
ADD
ADDMEND
Pl, P2, P3
AX, P1
BX, P2
CX, P3
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
10/23
10
LISTA NAZIVA PARAMETARA:Pored tabele makro definicija koristi se i
lista naziva parametara (LNP).Ona uspostavlja vezu između fiktivnih i
stvarnih parametara makro instrukcije.Unutar makro definicije parametri semogu referisati i preko indeksa u listi
parametara.
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
11/23
11
Primer LNPNpr. makroinstrukcija: ADDUP DATA1, DATA2, DATA3
ADDUP je naziv makro instrukcije DATA1, DATA2, DATA3 su stvarni parametri
(argumenti)TABELA LISTE NAZIVA PARAMETARA (LNP)
INDEKSSTVARNI
PARAMETAR
FIKTIVNI
PARAMETAR
1
2
3
DATA 1
DATA 2
DATA 3
P1
P2
P3
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
12/23
12
Proširivanje makro instrukcija
(obavlja se u fazi prevođenja):Makro instrukcija se zamenjuje telom
odgovarajuće makro definicije.Formalni parametar u telu makro
definicije se zamenjuje odgovarajuć
omvrednošću stvarnog parametra iz poljaoperanda makro instrukcije koja se
proširuje.Dalje sledi prvi prolaz asemblera.
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
13/23
13
Proširenje I prolaza asemblera(u tački X slike 2.5) (1/2)
DA
START
BITPR=1
MKRAJ
UČITAVANJE LINIJEKODA IZ DATOTEKE
BITPR = 0
KOPIRANJE JEDNEVRSTE IZ TMD
ZAMENA FORMALNIHPARAMETARA REALN. IZ LNP
POVRATAK
NE
NE
DA
UČITAVANJE LINIJEKODA IZ DATOTEKE
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
14/23
14
Proširenje I prolaza asemblera(2/2)Ukazivač proširenja se postavlja na 1 kad se prepoznamakro instrukcija i pošto se ona obradi
START
- KOPIRANJE PARAM. IZ MAKROPSEUDO ZA INDEKS I U LNP
- KOPIRANJE VREDNOSTIPARAMETARA IZMAKROINSTRUKCIJE U LNP
POVRATAK
BITPR = 1
I = INDEKS U TMD
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
15/23
15
Specifičnosti proširivanja
makro instrukcija:Makro jezik uključuje makro promenljive,
ugrađene funkcije za baratanje nizovimaznakova, izraze, i iskaze dodele i izbora.
Dozvoljena je samo i međ
u rekurzija –opasnost od beskonačnog razvoja.Rezultat – promenljiv broj instrukcija.
Zamena fiktivnih parametara stvarnim seobavlja na nivou ASCII znakova.
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
16/23
16
Makro jezik: Iskaz IFIF RELACIJA, K RELACIJA ima oblik: OPND1 REL OPND2
REL: ==, !=, , = Ako relacija ima vrednost tačno, proširenje
makro instrukcije će se nastaviti sa linijomizvornog koda označenog sa K
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
17/23
17
Primer iskaza IF0 TESTZ MAKRO A, B, C
1 MOV AL, A - unos prvog znaka
2 MOV BL, B - unos drugog znaka
3 CMP AL, BL - upoređenje
4 IF C = ", 6 - skok na 6 ako je vrednosttrećeg parametra
nedefinisana5 JZ C - grananje u slučaju =
6 MKRAJ
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
18/23
18
Makro jezik: Iskaz dodele (1/3)Simbol = IZRAZ Primer makro za generisanje instrukcija za
izračunavanje vrednost Y=XN
Ako je N=0, u Y se smešta konstanta 1, a ako je
N≥1, u Y se smešta vrednost XN
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
19/23
19
Makro jezik: Iskaz dodele (2/3)0 TEZI MAKRO X, N, Y
1 IF N=0,8 Ako je N=0 razvija se red 8
2 I = 1 I = 1
3 MOV AX, X
4 IF I=N,9 Ako je i=n razvija se red 9
5 MUL AX, X množenje sa X
6 I = I + 1 I = I +1
7 IF = ,4 ciklus ponavljanja
8 MOV AX, 1 Xn = 1 z a N = 0
9 MOV Y, AX smeštanje Xn
10 MKRAJ
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
20/23
20
Makro jezik: Iskaz dodele (3/3) Instrukcija IF = ,4
ekvivalentna GOTO pošto je relacija uvek tačna Makroinstrukcija TEZI 8, 0, Z se razvija u
MOV AX, 1 Xn = 1 jer je N = 0
MOV Z, AX smeštanje Xn na adresu Z Makroinstrukcija TEZI A, 3, B se razvija u
MOV AX, A unos A u reg AX
MUL AX, A množenje sa A
MUL AX, A množenje sa A
MOV B, AX smeštanje Xn u B
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
21/23
21
Indeksiranje parametaraParametre je moguće referencirati putem
indeksa u LNP Npr. ako je LNP (3,X vredn, Y+8, K[1,4]):
A odnosi na (3,X vredn, Y + 8, K[1,4])
A.(1) odnosi na 3
A.(2) odnosi na X vredn
A.(3) odnosi na Y+8 A.(4) odnosi na K[1,4]
A.(n) za n > 4 se odnosi na prazan niz
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
22/23
22
Parametrizovani programiPisanje procedura, koje lako mogu da se
adaptiraju na različite situacije Menjanjem iskaza izjednačenja (EQU)
EQU se koristi radi definicije simbola koji su u
stvari parametri u makro definiciji Primer: generisanje operativnih sistema
Procedure OS se parametriziraju korišćenjem
iskaza EQU i uslovnih makro iskaza
-
8/19/2019 P1.2 Poglavlje 2 - Projektovanje Makroasemblera
23/23
23
Realizacija IF, =, i indeksiranja IF pseudo-instrukcija se interpretira od
strane dela za obradu makro instrukcija Izračunava se relacija i po potrebi prelazi na K
Obrada "=" pseudo-instrukcije je u osnovi
ista kao obrada instrukcije izjednačavanja Indeksiranje parametara
Kad se kopira linija polaznog programa iz tabele
makro definicija u ulaznu zonu, ulazna rutinamora da proverava indekse kad god pronađeparametre u liniji