Extras din referat
Macroinstrucţiunea este o scriere comodă a unor grupuri de instrucţiuni folosite mai des. Într-un asamblor, care corespunde unui limbaj construit pe structura unui procesor anumit, se pot implementa, în acest fel, unele operaţii logice specifice unei probleme concrete. Prin macroinstrucţiuni se pot crea instrucţiuni proprii fiecărei noi aplicaţii. Macroinstrucţiunile oferă limbajelor de asamblare unele elemente aferente unui limbaj de nivel înalt. Elaborarea de macroprocesoare a reprezentat, de altfel, o etapa în procesul construirii de compilatoare.
Macroprocesoarele se includ, de regulă, în asambloare, dar pot apărea şi în compilatoarele limbajelor de nivel înalt, oferind facilitatea definirii unor noi elemente de limbaj, convenabile într-o aplicaţie particulară. Uneori, macroprocesoarele se includ în procesoarele de comenzi ale sistemelor de operare. Macroprocesoarele de uz general, nespecifice unui limbaj, care pot apărea într-o aplicaţie deja stabilită, sunt destinate creării de şabloane de comandă, memorate, care oferă aplicaţiei o anumită flexibilitate pe care structura stabilită nu o permite de regulă.
Principalele funcţii ale macroprocesorului sunt definirea macro şi dezvoltarea macro . Operaţia de definire macro stabileşte numele noii construcţii şi alcătuirea corpului acesteia.
Operaţia de dezvoltare macro a unei macroinstrucţiuni este un proces de înlocuire a declaraţiei macroinstrucţiunii cu grupul corespondent de instrucţiuni, conform celor stabilite în definirea macro. Procesul se mai numeşte şi generare macro.
Definirea macro
Se folosesc două directive: MACRO si ENDMACRO. Cu directiva MACRO se introduce numele macroinstucţiunii şi câmpul de operanzi, care vor identifica apelul macro. Câmpul de operanzi începe cu un operand care permite înlocuirea parametrilor formali prin cei efectivi. După prima linie cu MACRO urmează corpul macroinstuctiunii, format din linii cu instrucţiuni, care vor înlocui apelul macro din program. Cu directiva ENDMACRO se indica sfârşitul definirii macro.
Dezvoltarea macro
În cursul programului apare apelul macro, reprezentat prin numele de macroinstrucţiune urmat de operanzii efectivi. Apelul macro primeşte indicator de comentariu în program şi se inserează suita de instrucţiuni conform cu şablonul din definirea macro. În dezvoltarea macro toate referirile la operanzi generici se înlocuiesc cu operanzi locali.
Macroinstrucţiunea poate fi pusă în relaţie cu apelul la subrutină. În ambele cazuri se urmăreşte folosirea de mai multe ori a unui tipar de instrucţiuni clasice, pentru eliberarea programatorului de sarcini repetitive. Deosebirea constă în modul diferit de realizare în practică a acestei acţiuni. La apelul la subrutină, procesul executant al programului parăseşte lista curentă de instrucţiuni, parcurgând temporar lista de instrucţiuni din locul unde se plasează rutina, după care revine la lista originală. La dezvoltarea macro sunt inserate în lista curentă instrucţiunile din şablonul macro, la fiecare apel macro.
Comparaţie între apel la subrutină şi dezvoltare macro (apel macro).
callsub macro &subrutin1,&subrutin2
push
push
push
......
push
call subrutin1
call subrutin2
pop
pop
.....
pop
endmacro
Dezvoltare macro:
callsub alfa, beta push
.......... ......
callsub gama, beta push
call alfa
call beta
pop
.....
pop
Definire macro:
cont macro an,deo,troa
program cu variabilele an,deo,troa
endmacro
Dezvoltare macro, în diferite faze ale programului:
cont uno,due,tre
....
cont ain,tvai,drai
....
cont oan,tu,tri
Se observă că acelaşi program, cont, apare cu modificări de variabile, în diferite locuri în program. Procesorul prelucrează imediat fiecare apariţie, fără pregătiri speciale, ca pe zone obişnuite într-o singură listă de instrucţiuni.
Definire subrutină (procedură):
cont
Preview document
Conținut arhivă zip
- Macroprocesoare.DOC