P1.2 Poglavlje 2 - Projektovanje Makroasemblera

Embed Size (px)

Citation preview

  • 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