SP Unit2 RNP
SP Unit2 RNP
Macro Processor
3. Develop approaches and methods for implementing compiler, linker and loader.
4. Use LEX tool for lexical analysis.
5. Interpret the techniques of implementing utility software.
2
Outline
❑Macro definition and call
❑macro expansion
❑Nested Macro calls
❑Design of macro processor
❑Design issues of macro processors. (Data structures for design of MDT, MNT)
❑Design of two-pass macro processors
❑Advanced Macro Facilities.
3
Introduction
Macro
INCR &MEM_VAL, &INCR_VAL, ® Prototype
MOVER ®, &MEM_VAL Model
ADD ®,&INCR_VAL Model
MOVEM ®, &MEM_VAL Model
MEND
Macro Processor`
Source Code
(with macro)
Macro Processor Expanded Compiler or obj
Code Assembler
Macro Definition
copy code
parameter substitution
conditional macro expansion
macro instruction defining macros
Copy code -- Example
Source Expanded source
STRG MACRO .
STA DATA1 .
STB DATA2 .
STX DATA3 STA DATA1
.
STRG
MEND
.
{ STB
STX
DATA2
DATA3
STA DATA1
.
STRG
.
.
{ STB
STX
DATA2
DATA3
.
Macro vs. Subroutine
Macro
◦ the statement of expansion are generated each time the macro are invoked
Subroutine
◦ the statement in a subroutine appears only once
Macro definition and call
Macro definition:
A macro definition is enclosed between a macro header statement and macro end statement.
Macro definition are typically located at the start of program .
Macro definition consist of
◼ A macro prototype statement
◼ One or more model statement
◼ Macro preprocessor statement
Example: the following sequence of instruction is used to increment the value in a
memory word by a constant:
Move the value from the memory word into a machine register.
Increment the value in the machine register.
Move the new value into the memory word.
Using lexical expansion the macro call INCRA,B,AREG can lead to the generation of a
MOVE-ADD-MOVE instruction sequence to increment A by the value Busing AREG.
Macro definition and call
Amacroprototypestatement
◼ The macro prototype statement declares the name of a macro and the names and kinds of its
parameters.
◼ <macro name> [<formal parameter spec>, …]
◼ Where name appears in the mnemonic field of assembly statement and <formal parameter
spec> isof theform &<parameter name>[<parameter kind>]
Model statement
◼ A model statement is a statement from which an assembly language statement may be generated
during macro expansion.
Macropreprocessor statement
◼ Apreprocessorstatement isusedto perform auxiliary functions
during macro expansion.
Example
Macro
INCR &MEM_VAL, &INCR_VAL, ®
MOVER ®, &MEM_VAL
ADD ®, &INCR_VAL
MOVEM ®, &MEM_VAL
MEND
Macro call
Flowof controlduringexpansion
The default flow of control during macro expansion is sequential. its start with
statement following the macro prototype statement and ending with the statement
preceding theMENDstatement.
A preprocessor statement can alter the flow of control during expansion such that some
modelstatementsare nevervisited during expansioniscalled conditional expansion.
Same statement are repeatedly visited during expansion is called loops
expansion.
Algorithm – Micro Expansion
Lexical Substitution:
Model statementconsistsof 3 type of strings
◼ Anordinary string, whichstandsfor itself.
◼ Thenameof a formal parameter whichispreceded by the character „&‟.
◼ Thenameof preprocessor variable, whichisalso preceded by the character „&‟.
Duringlexical expansion, string of type 1 are retained
without substitution.
String type 2 and 3 are replaced by the corresponding actual parameter values.
Thevalue of formal parameter depends onthe kind of
parameter.
Quiz
1. The translator which perform macro expansion is called a ________________
2. A ________________ statement declare the name of macro.
3. During macro expansion each statement is replaced by ________________
4. Each macro statement is marked with the __________ sign preceded it.
5. The flow control during macro expansion is________________
6. A model statement contains call for another macro is called as________________
7. Expansion time variables are used ________________
8. Macro processor is an inbuilt function of ? ________________.
9. If a number of instructions are repeating through the main program, then to reduce
the length of the program, ________________ is used.
10. The process of assigning a label or macro name to the string is called
________________
21
Types of Parameters
Positional parameters
Keyword parameters
Default specification of parameter
Macro with mixed parameter lists
Other usesof parameters
Positional parameters
Positional parameters
A positional formal parameter is written as &<parameter name>. The <actual parameter
spec> in call ona macrousingpositional parameters issimplyan
<ordinary string>.
Step-1 find the ordinal position of XYZ in the list of formal parameters in the macro
prototype statement.
Step-2 find the actual parameter specification occupying the same ordinal position in the
list of actual parameters inmacrocall statement.
Positional parameters – Example
INCRA, B,AREG
Therule of positional association values of the formal parameters are:
Formal parameter
value
MEM_VAL INCR_VAL AB
REG AREG
Keyword parameters
<parameter name > is an ordinary stringand
<parameter kind> is the string „=„ in syntax rule.
The<actual parameter spec> is written as <formal parameter
name>=<ordinary string>.
Thekeyword association rules:
◼ Step-1 find the actual parameter specification which has the form XYZ=<ordinary string>
◼ Step-2 Let <ordinary string> in the specification be the string ABC. Thenthe value of
formal parameter XYZis ABC.
Keyword parameters
Example :
Default specification of parameters
A model statement in macro may constitute a call on another macro, suchcalls are
known as nested macro calls.
Themacro containing the nested call is called outer macro.
Thecalled macro called inner macro.
Expansion of nested macro calls follows the last-in- first-out(LIFO) rule.
Nested Macro
Call - Example
Advanced Macro Facilities
AnAIFstatement hassyntax
AIF (<expression>) <sequencing symbol>
If the relational expression evaluates to true, expansion time control istransferred to the
statement containing <sequencing symbol> in its label field.
Advanced Macro Facilities
AnANOPstatementiswrittenas
<sequencingsymbol> ANOP
38
Expansion Time Variable (EV‟s)
ExpansionTime Variable
Expansion time variable are variables which can only be used during the expansion of
macro calls.
LocalEVisscreated for useonly during a particular macrocall.
Global EVexists across all macro calls situated in program and can be used in any macro
whichhasa declaration for it.
<EV specification> has syntax &<EV name>, where EVname is ordinary string.
Attributes of formalparameters:
<attribute name>‟ <formal parameter spec>
MACRO
EVAL &X, &Y, &Z
AIF (&Y EQ &X) . ONLY
MOVER AREG , &X
SUB AREG , &Y
ADD AREG, &Z
AGO .OVER
.ONLY MOVER AREG, &Z
.OVER MEND
Expansion timeloop
Togenerate many similar statements during the expansion of amacro.
Thiscanbe achieved by similar model statements in the macro.
Example:
MACRO
CLEAR &A
MOVER AREG,= “0”
MOVEM AREG, &A
MOVEM AREG, &A+1
MOVEM AREG, &A+2
MEND
Expansion time loops can be written using expansion time variables and expansion time
control transfer statement AIF and AGO.
Example:
MACRO
CLEAR &X, &N
LCL &M
&M SET 0
MOVERAREG,=„0‟
.MOVE MOVEM AREG, &X+&M
&M SET &M+1
AIF (&M NE N) .MORE
MEND
Comparison with execution time loops:
In execution time loop programs would execute slower than programs containing
expansion time loops.
Other facilities for expansion time loops:
REPTstatement
◼ Syntax: REPT<expression>
◼ <expression> should evaluate to a numerical value during macro expansion.
◼ Thestatements between REPTand an ENDMstatement would be processed for expansion
<expression> number of times.
Example
MACRO
CONST10
LCL &M
&M SET 1
REPT 10
DC „&M‟
&M SET &M+1
ENDM
MEND
IRPstatement
IRP <formal parameter>, <argument-list>
Formal parameter mentioned in the statement takes successivevalues from the
argument list.
Thestatements between the IRPand ENDM statements are expanded
once.
Example:
MACRO
CONSTS &M, &N, &Z
IRP &Z, &M, 7, &N
DC ‘ &Z'
ENDM
MEND
54
DESIGN OF A MACROPREPROCESSOR
Macro
Assembler
preprocessor
Taskare asfollow
◼ MECpoints to the MDTentry containing the model statement.
◼ Values of formal parameters and EV‟sare available in APT
and EVT,respectively
◼ Themodel statement defining a sequencing symbol can be identified from SST.
The table APT,PDT and EVT contain pairs which are searched using the first
component of the pairs as a key- the formal parameter name is used as the key
to obtain its value from APT.
Thissearch can be eliminated if the position of an entity within a table is known
when its value isaccessed.
Thevalue of formal parameter ABCis needed while expanding a model
statement using it
MOVER AREG,&ABC
Let the pair (ABC,5) occupy entry #5 in APT. the search in APT can be avoided if
the model statement appears as
MOVER AREG,(P,5)
In the MDT,where (P,5) stand for the word „parameter #5‟.
Thefirst component of the pairs stored in APTis no longer used during macro
expansion e.g. the information (P,5)appearing in model statement is sufficient to
accessthe value of formal parameter ABC.
APTcontaining (<formal parameter name>,<value>) pairs is replaced by another
table called APTABwhich only contains <value>‟s.
Ordinal number are assigned to all parameters of macro, a table named parameter
nametable (PNTAB) is used for thispurpose.
Parameter name are entered in PNTABin sameorder in which they appear in the
prototype statement.
Theinformation (<formal parameter name>,<value>) in APThasbeen
split into two tables
PNTAB-which contains formal parameternames
APTAB-which contains formal parameter values PNTABis used while
processing a macro definition while APTABis used during macroexpansion.
Thepositional parameter of macro appear before keyword parameters in the
prototype statement.
If macro have p positional parameter and k keyword parameters, then keyword parameters
have the ordinal number p+1, p+2…P+k
Dueto this numbering redundancies appear inPDT.
Entry only needs to exist for parameter number p+1, P+2 …P+k.
So,replace parameter default table(PDT) by a keyword parameter default table (KPDTAB),
this table have only k entries.
MNThasentries for all macrosdefined in a program, each entry contains three pointers
MDTP,KPDTPand SSTPwhich are pointers to MDT,KPDTABand SSNTABfor the macro respectively.
Similar analysis leads to splitting of EVTinto EVNTABand EVTABand SST
into SSNTABand SSTAB.
EVname are entered in EVNTABwhile processing EVdeclarations.
SSname are entered in SSNTABwhile processing an SSreference or
definition, whichever occur earlier.
Macro preprocessor data structure can be summarized as follows:
PNTABand KPDTABare constructed by processing the prototype statement.
Entries are added to EVNTABand SSNTABas EVdeclarations and SSdefinitions/references are
encountered.
MDTentries are constructed while processing model
statements and preprocessor statements in macrobody.
SSTABentries, when the definition of sequencing symbol inencountered.
APTABis constructed while processing a macro.
EVTABis constructed at the start of expansion of macro.
Tables of the macro preprocessor
Table Fields in each entry
N
REG SSNTAB MORE
MNT CLEARMEM 2 1 1 25 10 5
28 MOVEM (P,3),(P,1)+(E,1)
AREA
10 29 (E,1) SET (E,1)+1
BREG 30 AIF ((E,1) NE (P,2)) (S,1)
31 MEND
Processing of Macro definitions : Algorithm
KPDTAB_pointer = 1
SSTAB_ptr = 1;
MDT_ptr = 1;
Algorithm :( Processing of a macro definition)
1. SSNTAB_ptr=1; PNTAB_ptr=1;
2. Process the macro prototype statement and form the MNT entry
(a) name= macro name
(b) for eachpositionalparameter
(i) Enterparameter nameinPNTAB[PNTAB_ptr]
(ii) PNTAB_ptr= PNTAB_ptr+1;
(iii) #PP=#PP+1;
Processing of Macro definitions : Algorithm
(c) KPDTP=KPDTAB_ptr;
(d) for eachkeywordparameter
(i) Enter parameter nameand defaultvalue (if any) , in KPDTAB[KPDTAB_ptr].
(i) Enterparameter nameinPNTAB[PNTAB_ptr].
(ii) KPDTAB_ptr=KPDTAB_ptr+1;
(iii) PNTAB_ptr=PNTAB_ptr+1;
(iv) #KP=#KP+1;
(e) MDTP=MDT_ptr;
(f) #EV=0;
(g) SSTP=SSTAB_ptr;
Processing of Macro definitions : Algorithm
82
Nested Macro Call
A model statement in macro may constitute a call on another macro, suchcalls are
known as nested macro calls.
Themacro containing the nested call is called outer macro.
Thecalled macro called inner macro.
Expansion of nested macro calls follows the last-in- first-out(LIFO) rule.
Nested Macro
Call - Example
Nested macro calls
Creating many copies of the expansion time data structure, this arrangement
provides access efficiency but it is expensive in terms of memory requirements.
Difficult in design decision- how many copies of the data structures should be
created?
If too many copies are created then somemay never be used.
If too few are created, someassembly programs may have to be rejected.
Nested macro calls
Record base (RB)is a pointer pointing to the start of this expansion record.
TOSpoint to the last occupied entry in stack.
When nested macro call is detected, another set of data structure is allocated
on thestack.
Nested macro calls ( Expansion Record)
EVTAB
TOS->
Data structure Address
Reserved pointer 0(RB)
MEC 1(RB)
EVTAB_ptr 2(RB)
APTAB 3(RB) to eAPTAB+2(RB)
EVTAB Contents of EVTAB_ptr
Thestart of expansion
No. Statement
1. TOS=TOS+1;
2. TOS* = RB;
3. RB=TOS;
4. 1(RB)=MDTP entry of MNT;
5. 2(RB)= RB+#eAPTAB;
6. TOS=TOS+#eAPTAB+#eEVTAB+2
First statement increment TOSto point at the first word of the new expansion
record. This is reserved pointer.
Second statement deposits the address of the previous record base into
this word.
New RBis established in statement 3.
MEC and EVTAB_ptr set in statement 4 and 5 respectively.
At the end of Expansion
No. Statement
1. TOS=RB-1;
2. RB= RB*;
The first statement pops an expansion record off the stack by resetting TOS to
the value it had while the outer macrowasbeing expanded.
RB isthenmade to point at the base of previous record.
Design of macro assembler
BECE6 6, 8, REG=AREG
BECE6 3,0
PNTAB X EVNTAB -
Y
SSNTAB EXIT
REG