UNIT-IV
Macro Processors
1
Introduction
2
Macro Processor
Functions
3
Macro Processor
Recognize macro definitions
Save the macro definition
Recognize macro calls
Expand macro calls
Source
Macro Expanded Compiler or obj
Code
(with macro)
Processor Code Assembler
4
Macro Definition
copy code
parameter substitution
conditional macro expansion
macro instruction defining macros
5
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
6
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
7
Parameter Substitution
-- Example
Source Expanded souce
STRG MACRO &a1, &a2, &a3 .
STA &a1 .
STB &a2 .
STX &a3 STA DATA1
.
MEND
STRG DATA1, DATA2, DATA3
{
.
STB
STX
DATA2
DATA3
. STA DATA4
STRG DATA4, DATA5, DATA6
.
.
{
.
STB
STX
DATA5
DATA6
8
Parameter Substitution
Dummy arguments
Positional argument
STRG DATA1, DATA2, DATA3
GENER ,,DIRECT,,,,,,3
Keyword argument
STRG &a3=DATA1, &a2=DATA2, &a1=DATA3
GENER TYPE=DIRECT, CHANNEL=3
9
One-Pass Macro
Processor
Prerequisite
every macro must be defined before it is called
Sub-procedures
macro definition: DEFINE
macro invocation: EXPAND
NAMTAB
MACRO DEFINE DEFTAB
PROCESSLINE
CALL EXPAND ARGTAB
10
Data Structures --
Global Variables
DEFTAB
NAMTAB
ARGTAB
12
EXPANDING
13
16
Nested Macros
Definition
Macro definition within macros
process macro definition during expansion time
Example 4.3
17
Figure 4.3 (b)
18
One-Pass Macro Processor That Allows
Nested Macro Definition
Sub-procedures
macro definition: DEFINE
macro invocation: EXPAND
EXPAND may invoke DEFINE when encounter
macro definition
NAMTAB
MACRO DEFINE
DEFTAB PROCESSLINE
CALL EXPAND
ARGTAB
Expanding MACRO Definition
19
1-Pass Macro Processor
DEFINE
MACRO
PROCESSOR
GETLINE
EXPANDING=FALSE
PROCESSLINE
GETLINE EXPAND
PROCESSLINE
EXPANDING=TRUE
GETLINE
GETLINE
PROCESSLINE
EXPANDING FALSE
TRUE
READ FROM READ FROM
DEFTAB INPUT
20
Comparison of Macro
Processors Design
Single pass
every macro must be defined before it is called
one-pass processor can alternate between macro definition
and macro expansion
nested macro definitions may be allowed but nested calls
are not
Two pass algorithm
Pass1: Recognize macro definitions
Pass2: Recognize macro calls
nested macro definitions are not allowed
21
Concatenation of
Macro Parameters
Pre-concatenation
LDA X&ID1
Post-concatenation
LDA X&ID1
Example:
22
Generation of Unique
Labels
Example
JEQ *-3
inconvenient, error-prone, difficult to read
Example :
$LOOP TD =X&INDEV
1st call:
$AALOOP TD =XF1
2nd call:
$ABLOOP TD =XF1
23
RDBUFF F1, BUFFER, LENGTH
Conditional Macro
Expansion
Macro-time conditional statements
IF-ELSE-ENDIF
Macro-time variables
any symbol that begins with the character & and that is not a
macro parameter
macro-time variables are initialized to 0
macro-time variables can be changed with their values using
SET
&EORCK SET 1
26
RDBUFF F3, BUF, RECL, 04, 2048
RDBUFF 0E, BUFFER, LENGTH, , 80
RDBUFF F1, BUFF, RLENG, 04
Conditional Macro
Expansion (Cont.)
Macro-time looping statement
WHILE-ENDW
Macro processor function
%NITEMS: THE NUMBER OF MEMBERS IN AN
ARGUMENT LIST
30
Nested Macro
Invocations
Macro invocations within macros
process macro invocation during expansion time
Recursive macro expansion
Problems:
ARGTAB
EXPANDING
Solution
Recursive call
While loop with stack
31
ARGTAB
DEFTAB MACRO Definition
DEFINE
NAMTAB
GETLINE
PROCESSLINE
Macro Invocation
EXPAND
ARGTAB
32
1-Pass Macro Processor
DEFINE
MACRO
PROCESSOR
GETLINE
EXPANDING=FALSE
PROCESSLINE
GETLINE EXPAND
PROCESSLINE
EXPANDING=TRUE
GETLINE
GETLINE
PROCESSLINE
EXPANDING FALSE
TRUE
READ FROM READ FROM
DEFTAB INPUT
33
Allowing Nested
Macro Invocation
DEFINE(f)
MACRO
PROCESSOR
GETLINE(f)
PROCESSLINE(f)
GETLINE(0)
PROCESSLINE(0) EXPAND
GETLINE(1)
GETLINE(f)
PROCESSLINE(1)
f FALSE
TRUE
READ FROM READ FROM
DEFTAB INPUT
34
Macro-Assembler
Advantage
reduce 1 pass
share same data structure
Disadvantage
more complex
35
Pass 1 READ
Search Pass 2
R Type?
(Pseudo-Op Table)
Search NAMTAB MACRO Process
(Macro Name Table) Define pseudo-ops
Search R R
(Machine Op Table)
MACRO
Process Expand
machine
instruction
R
R
General Purpose
Macro Processor
ELENA
Macro definition
header:
a sequence of keywords and parameter markers (%)
at least one of the first two tokens in a macro header must be a
keyword, not a parameter marker
body:
the character & identifies a local label
macro time instruction (.SET, .IF .JUMP, .E)
macro time variables or labels (.)
37
ELENA (cont.)
Macro invocation
There is no single token that constitutes the macro name
Constructing an index of all macro headers according to the
keywords in the first two tokens of the header
Example
DEFINITION:
ADD %1 TO %2
ADD %1 TO THE FIRST ELEMENT OF %2
INVOCATION: DISPLAY %1
DISPLAY TABLE
%1 TABLE
38