SlideShare a Scribd company logo
Course Objectives:
▪To get acquainted with the basics of System Programming.
▪To acquire knowledge of data structures used in the design of System
Software.
▪To be familiar with the format of object modules, the functions of linking,
relocation, and loading.
▪To comprehend the structures and functions of Operating Systems and
process management.
▪To deal with concurrency and deadlock in the Operating System.
▪To learn and understand memory management of Operating System.
310243: Systems Programming and Operating
System
1
8/2/2024
Course Outcomes:
On completion of the course, learners should be able to-
CO1: Analyze and synthesize basic System Software and its functionality.
CO2: Identify suitable data structures and Design & Implement various System
Software
CO3: Compare different loading schemes and analyze the performance of linker
and loader
CO4: Implement and Analyze the performance of process scheduling algorithms
CO5: Identify the mechanism to deal with deadlock and concurrency issues
CO6: Demonstrate memory organization and memory management policies
310243: Systems Programming and Operating
System
2
8/2/2024
Macro Processor and Compiler
3
8/2/2024
UNIT-II
Syllabus
Introduction, Features of a Macro facility: Macro instruction
arguments, Conditional Macro expansion, Macro calls within Macros,
Macro instructions defining Macro, Design of two pass Macro
processor, Concept of single pass Macro processor
Introduction to Compilers: Phases of Compiler with one example,
Comparison of Compiler and Interpreter
#Exemplar/Case Studies: GNU M4 Macro Processor
Mapping of Course Outcomes for Unit II: CO1, CO2, CO3
4
8/2/2024
Introduction to Macro
Processor
◦ Macro instructions are considered as the extension of the
basic assembler language.
◦ A macro instruction is convenient for the programmer in
terms of notation.
◦ A macro is a single-line abbreviation used for a group of
instructions.
◦ It allows the programmer to write shorthand version of a
program (module programming)
◦ The macro processor replaces each macro call with the
corresponding sequence of statements (expanding)
8/2/2024 5
Macro Processor
Working of Macro Processor
1. Recognizes macro definitions
2. Saves the macro definition
3. Recognizes macro calls
4. Expands macro calls
Source
Code
(with macro)
Macro
Processor
Expanded
Code
Compiler or
Assembler
obj
6
8/2/2024
Macro Definition
MACRO Start of Definition
<Macro Name> <List of Parameters [p1, p2, …pn]>
Macro Name (with label or argument(s)
which is optional)
-------------
------------- Sequence to be abbreviated
-------------
MEND End of Definition
7
8/2/2024
Macro Definition
MACRO (Start of Definition):-This keyword indicates the beginning of a
macro definition. It signals to the macro processor that what follows is
a macro to be defined.
<Macro Name> <List of Parameters [p1, p2, …pn]>:-This is the
identifier you use to call the macro. These are optional and define the
placeholders that can be used within the macro body
Sequence to be abbreviated:-This section contains the actual code or
instructions that the macro will expand into. It represents the body of
the macro and includes any logic or operations defined by the macro.
MEND (End of Definition):-This keyword signifies the end of the
macro definition. It tells the macro processor that the macro
definition is complete, and any subsequent code will not be part of
this macro.
8
Macro Definition (cont..)
Example:
MACRO
ADDS &arg1, &arg2, &arg3
L 1, &arg1
A 1, &arg2
ST 1, &arg3
MEND
8/2/2024 9
Macro Call
<Macro Name> <List of Actual parameters[ a1, a2, …an]>
For Ex.🡪
ADDS DATA1, DATA2, DATA3
A macro call is a statement in the source code that invokes a
previously defined macro, replacing it with the macro’s body or
definition.
8/2/2024 10
Macro Expansion
//Source Code with Macro definition &
macro call
MACRO
ADDS &arg1,&arg2,&arg3
L 1, &arg1
A 1, &arg2
ST 1, &arg3
MEND
PROG START 0
BALR 15,0
USING *,15
ADDS DATA1, DATA2, DATA3
SR 4,4
DATA1 DC F’3’
DATA2 DC F’4’
DATA3 DS 1F
END
// Processed code after macro
Expansion
PROG START 0
BALR 15,0
USING *,15
L 1, DATA1
A 1, DATA2
ST 1,DATA3
SR 4,4
DATA1 DC F’3’
DATA2 DC F’4’
DATA3 DS 1F
END
Macro
Expansion
8/2/2024 11
Macro Expansion (cont..)
Source program with Macro Definition & Macro call
MACRO
ADDS &arg1,&arg2,&arg3
L 1, &arg1
A 1, &arg2
ST 1, &arg3
MEND
PROG START 0
BALR 15,0
USING *,15
ADDS DATA1, DATA2, DATA3
SR 4,4
ADDS D4, D5, D6
DATA1 DC F’3’
DATA2 DC F’4’
DATA3 DS 1F
D4 DC F’1’
D5 DC F’2’
D6 DS 1F
END
Source program after macro expansion
PROG START 0
BALR 15,0
USING *,15
L 1, DATA1
A 1, DATA2
ST 1, DATA3
SR 4, 4
L 1, D4
A 1, D5
ST 1, D6
DATA1 DC F’3’
DATA2 DC F’4’
DATA3 DS 1F
D4 DC F’1’
D5 DC F’2’
D6 DS 1F
END
1st
Macro
call
2nd
Macro
call
12
MACRO
ADDS &arg1,&arg2,&arg3
L 1, &arg1
A 1, &arg2
ST 1, &arg3
MEND
• Macro expansion in programming generally refers to the process
of replacing macros with their defined code.
• Definition Replacement: A macro is a shorthand for a code
snippet or a set of instructions. During macro expansion, the
preprocessor replaces macro names with their corresponding
code as defined in the macro's definition.
• Tasks involved in macro expansion :-
• 1. Identify the macro calls in the program.
• 2. The values of formal parameters are identified.
• 3. Maintain the values of expansion time variables declared in a
macro.
• 4. Expansion time control flow is organized.
• 5 . Determining the values of sequencing symbols
• 6 . Expansion of a model statement is performed
13
Parameter Substitution
▪Positional Formal Argument
▪Keyword Argument
▪Default Argument
8/2/2024 14
Positional Formal Argument
// MACRO DEFINITION
MACRO
ADDS &arg1, &arg2, &arg3
L 1, &arg1
A 1, &arg2
ST 1, &arg3
MEND
/MACRO CALL
ADDS DATA1, DATA2, DATA3
Formal Parameter Actual Parameter
&arg1 DATA1
&arg2 DATA2
&arg3 DATA3
8/2/2024 15
Keyword Argument
//MACRO DEFINITION
MACRO
ADDS &arg1=, &arg2=, &arg3=
L 1, &arg1
A 1, &arg2
ST 1, &arg3
MEND
//MACRO CALL
ADDS &arg1=DATA1, &arg2= DATA2, &arg3= DATA3
……
ADDS &arg2= DATA2, &arg3= DATA3, &arg1=DATA1
Formal Parameter Actual Parameter
&arg1 DATA1
&arg2 DATA2
&Arg3 DATA3
8/2/2024 16
Default Argument
//MACRO DEFINITION
MACRO
ADDS &arg1=, &arg2=, &arg3=4
L 1, &arg1
A 1, &arg2
ST 1, &arg3
MEND
/MACRO CALL
ADDS &arg1=D1, &arg2= D2
……
ADDS &arg2= D2, &arg1=D1
ADDS &arg2= D2, &arg1=D1, &arg3=100
Formal Parameter Value
&arg1 D1
&arg2 D2
&arg3 100
//it overrides default value
8/2/2024 17
Macro with Mixed Parameter Lists
Macro can use all three types of parameters together
Example:-
//MACRO DEFINITION
MACRO
ADDS &arg1, &arg2=45, &arg3=
L 1, &arg1
A 1, &arg2
ST 1,&arg3
MEND
//MACRO CALL
ADDS D1, &arg3= D3
……
ADDS D1, &arg3=D6, &arg2=400
8/2/2024 18
19
Macro Function
Macro is preprocessed. Function is compiled.
Macro does not support type
checking.
Function support type
checking.
Program length increases. Program length remain same.
There is side effect while
using macro.
No side effect while using
function.
Execution is faster. Execution is slower.
Useful where small source
code appears many time.
Useful where large source
code appears many time.
Macro does not check
compile errors.
Function checks compile
errors.
20
Macro vs. Subroutine
Macro:
▪ Every macro call is
replaced by its definition.
▪ After expansion of
program, length increases.
So, more memory is
required.
▪ Processing time is less as
compared to subroutine
processing, because there
is no context switching
during macro processing.
Subroutine
▪ Every Subroutine (function)
call transfers control to the
first instruction of subroutine
which is called.
▪ After processing subroutine
call, the program size
remains same.
▪ Processing time is increased
due to context switching.
8/2/2024 21
Advanced Macro Facilities
▪Macro Calls within Macros
(Nested Macro Calls)
▪Macro instruction defining Macros
▪Conditional Macro Expansion
▪Expansion time variables
▪Expansion time Loops
8/2/2024 22
Macro Calls within Macros
(Nested Macro Calls)
Macro definition of one macro may generate call to another macro is called as nested
macro calls.
Example.
MACRO
ADD1 &arg
L 1, &arg
A 1, =F’1’
ST 1, &arg
MEND
MACRO
ADDS &arg1, &arg2 ,&arg3
ADD1 &arg1
ADD1 &arg2
MEND
Call to macro
8/2/2024 23
Macro Calls within Macros
(Nested Macro Calls) (cont..)
//Source Code
:
:
MACRO
ADD1 &arg
L 1, &arg
A 1,=F’1’
ST 1,&arg
MEND
MACRO
ADDS &a1,&a2,&a3
ADD1 &a1
ADD1 &a2
CMP 1,&a3
MEND
:
:
ADDS A, B, C
:
:
A DC F’3’
B DC F’13’
C DC F’6’
:
:
// Level-1 Expansion of
Source Code
:
:
:
:
:
:
:
:
:
:
:
:
ADD1 A
ADD1 B
CMP 1, C
:
:
:
:
Expansion
Of ADDS
// Level-2 Expansion of
Source Code
:
:
:
:
:
:
:
:
:
L 1, A
A 1, =F’1’
ST 1, A
L 1, B
A 1, =F’1’
ST 1, B
CMP 1, C
:
:
:
:
Expansion
of ADD1
8/2/2024 24
Macro Instruction Defining Macros
Macro definition may defines another macro
Ex.
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,V(&SUB)
BALR14,15
MEND
MEND
Macro calls
◦ DEFINE COS
◦ COS AR
Inner
Macro
Outer
Macro
8/2/2024 25
Conditional Macro Expansion
AIF & AGO are used for conditional macro expansion
8/2/2024 26
Conditional Macro Expansion
• Conditional macro expansion involves using conditional directives
within a macro to control which instructions are included in the
expansion.
• These directives allow the macro to expand differently depending on
the values of parameters or other conditions.
Implementation of conditional macro expansion:-
1. IF-ELSE-ENDIF structure :-When an IF statement is encountered
during the expansion of a macro, the specified Boolean expression
is evaluated.
a. For TRUE : The macro processor continues to process lines from
DEFTAB until it encounters the next ELSE or ENDIF statement. If
ELSE is encountered, then skips to ENDIF.
27
Conditional Macro Expansion
b. For FALSE : The macro processor skips ahead in DEFTAB until it
finds the next ELSE or ENDIF statement.
2. WHILE-ENDW structure :-
When WHILE statement is encountered during the expansion of a
macro, the specified Boolean expression is evaluated.
For TRUE : The macro processor continues to process lines from
DEFTAB unit it encounters the next ENDW stetement. When ENDW
is encountered, the macro processor returns to the proceding
WHILE, re - evaluates the Boolean expression and takes action based
on the new value.
For FALSE : The macro processor skips ahead in DERTAB until it finds
the next ENDW statement and then resumes normal macro
expansion.
28
For ex.
MYMACRO MACRO CONDITION
IF CONDITION
MOV AX, 1
ELSE
MOV AX, 0
ENDIF
ENDM
Here,
• If ‘CONDITION’ is true when ‘MYMACRO’ is called, the macro will expand to include ‘MOV AX,1’
• If ‘CONDIYION’ is false the macro will expand to include ‘MOV AX, 0’.
29
Need of Conditional Macro Expansion
Lets consider example:
:
:
LOOP1 A 1, A1
A 2, A2
A 3, A3
:
:
LOOP2 A 1, A3
A 2, A2
:
:
LOOP3 A 1, A1
:
:
A1 DC F’5’
A2 DC F’15’
A3 DC F’10’
8/2/2024 30
MACRO
&a0 VARY &CNT, &a1, &a2, &a3
&a0 A 1, &a1
AIF (&CNT EQ 1) .FINI
A 2,& a2
AIF (&CNT EQ 2) .FINI
A 3, &a3
.FINI MEND
:
:
LOOP1 VARY 3, A1, A2, A3
:
:
LOOP2 VARY 2, A3, A2
:
:
LOOP3 VARY 1, A1
:
:
A1 DC F’5’
A2 DC F’15’
Conditional Macro Expansion
// Expanded Source code
:
LOOP1 A 1, A1
A 2, A2
A 3, A3
:
:
LOOP2 A 1, A3
A 2, A2
:
:
LOOP3 A 1, A1
:
:
A1 DC F’5’
A2 DC F’15’
A3 DC F’10’
8/2/2024 31
AIF , .FINI, AGO
.FINI :- it is macro label and don’t appear in output of macro processor.
AIF(&count EQ 1).FINI:- The pseuodo op directs the macro processor to
skip the statement labeled .FINI, if “&count” value is 1; otherwise , the
macro processor is to continue with the statement following AIF
pseuodo op.
AGO:- it is unconditional branch pseudo op like “go to”.
32
8/2/2024
MACRO WITHIN MACROS
Macro Within a Macro
• When a macro is defined within another macro, it means that the inner
macro can be invoked as part of the expansion of the outer macro.
• The outer macro will include the invocation of the inner macro, and
during expansion, the inner macro will also be expanded.
Why Use Macro Within a Macro?
• Modularity: Each operation is defined separately, making the code easier
to read and maintain.
• Reusability: The inner macro can be reused in different parts of the outer
macro or even in other macros.
• Clarity: It helps in organizing the code better by separating different
logical operations into distinct macros.
33
FOR EX.
INCREMENT MACRO REG
INC REG
ENDM
DOUBLE_INCREMENT MACRO REG
INCREMENT REG
INCREMENT REG
ENDM
Here,
In this ex. ‘INCREMENT’ is simple macro that increment value of register.
‘DOUBLE_INCREMENT’ is another macro that uses the ‘INCREMENT’ macro twice to
increment the register twice.
When ‘DOUBLE_INCREMENT’ is invoked, it expands to two calls of ‘INCREMENT’
macro.
34
In a single-pass macro processor, the macro processing is
done in a single pass over the source code. This means that
the processor reads the entire source code only once to
perform macro expansion and other tasks.
Macro processor uses three main data structure:-
1. Definition table (DEF TAB) :-
• Stores the macro definition including macro prototype and
macro body.
• Comment lines are omitted.
• References to the macro instruction parameters are
converted to a positional notation for efficiency in
substituting arguments.
35
Concept of Single pass macro Processor
2. NAMTAB:-
• Stores macro names.
• Serves as an index to DEFTAB.
• Pointers to the beginning and the end of the macro definition
(DEFTAB).
3. ARGTAB:-
• Stores the arguments of macro invocation according to their
positions in the argument list.
• As the macro is expanded, arguments from ARGTAB are
substituted for the corresponding parameters in the macro body.
36
37
ALGORITHM OF SINGLE PASS MACRO PROCESOOR:-
•Initialization:
•MDT: Empty initially.
•MNT: Empty initially.
•Symbol Table: Empty initially.
•Read Input Line:
•Fetch the next line from the source code.
•Process Macro Definition:
•Identify Definition: Check if the line starts with a macro definition keyword (e.g., MACRO).
•Store Definition:
•Macro Name Table (MNT): Store the macro name and its starting location in MDT.
•Macro Definition Table (MDT): Store the macro body.
•End of Macro: Continue reading lines until the END directive or end of macro definition.
•Process Macro Invocation:
•Identify Invocation: Check if the line contains a macro invocation.
•Lookup: Find the macro definition from MNT.
•Expand:
•Parameter Substitution: Replace formal parameters with actual arguments.
•Insert Expanded Code: Replace the macro invocation line with the expanded code.
•Update Symbol Table: Add any new symbols introduced by the macro.
•Process Normal Code:
•Directly process any lines that are not macro definitions or invocations.
•Repeat:
•Continue until the entire source code has been processed.
•Output:
•Produce the final output with all macros expanded, ready for further processing or assembly.
A two-pass macro processor is an assembler designed to handle macros in two
distinct stages, or "passes," over the source code. This approach is used to ensure
that all macro definitions are correctly expanded and that macro invocations are
appropriately processed.
Pass 1: Definition and Cataloging
Purpose:
• The first pass identifies all macro definitions and macro invocations. It records
macro definitions and their locations and prepares for the macro expansion in
the second pass.
Pass 2: Expansion and Final Assembly
Purpose:
• The second pass replaces the macro placeholders in the intermediate code
with the actual expanded code from the MDT, taking into account the
parameter values recorded in Pass 1.
38
Design of Two pass macro Processor
Design of Two pass macro Processor
Pass-1 :
◦ Recognizes Macro Definition
◦ Stores Macro Instruction Definitions
Pass-2 :
◦ Recognizes Macro Calls
◦ Expands calls and substitute actual arguments
8/2/2024 39
Pass-1 Data structures/ programs :
◦ Source program with macro definitions and macro calls
◦ Output file without macro definitions & with macro calls
◦ Macro Definition Table (MDT):-
Purpose: Stores the actual definitions of macros.
◦ Macro Name Table (MNT):-
Purpose: Maps macro names to their definitions in MDT.
◦ Argument List Array (ALA) :-
Purpose: Stores information about macro parameters and their values.
◦ Macro Definition Table Counter (MDTC) :-
MDTC is used to indicate the next available entry in the MDT.
◦ Macro Name Table Counter (MNTC):-
MNTC is used to indicate the next available entry in the MNT.
40
Design of Two pass macro Processor
Pass-2 Data structures/programs :
◦ Input file without macro definitions & with macro calls
◦ Expanded output file without macro definitions & macro calls (Free from Macro)
◦ Refers Macro Definition Table (MDT) created by Pass-1
◦ Refers Macro Name Table (MNT) created by Pass-1
◦ Argument List Array (ALA) to map formal parameters with actual
◦ Macro Definition Table Pointer (MDTP):
-MDTP is used to indicate the next line of text to be used during macro
expansion.
41
42
43
Pass 1 Flowchart of 2 pass macro processor
44
45
Pass 2 Flowchart of 2 pass macro processor
Q). Justify which data structures are implemented at that time of
processing Macro definition, Macro call and Macro Expansion inn 2
pass macro processor.
1. Processing Macro Definition:-
Macro Definition Table (MDT):
◦ Justification: MDT is essential for storing macro definitions so that they
can be referenced and expanded during the second pass.
Macro Name Table (MNT):
◦ Justification: MNT helps in quickly locating the macro definition in MDT
during the second pass.
Argument List Array (ALA):
◦ Justification: ALA is used to keep track of actual arguments supplied
during macro calls, which will be substituted into the macro body
during expansion.
46
2. Processing Macro Call:-
Macro Name Table (MNT):
o Justification: MNT is used to quickly find the macro definition in MDT
when a macro call is encountered. It links the macro name to its
definition location.
Argument List Array (ALA):
◦ Justification: PT is used to capture the arguments provided in the
macro call, which will later be substituted into the macro definition
during the expansion phase.
Intermediate Code Listing:
◦ Justification: The intermediate code listing helps in maintaining the
structure of the source code with markers for where macros are
invoked.
47
3. Processing Macro Expansion:-
Macro Definition Table (MDT):
Justification: MDT is used to fetch the macro body, which will be modified by
substituting parameters from PT.
Argument List Array (ALA):-
Justification:- ALA is used to replace argument placeholder in macro
body with actual argument . This ensures macro is expanded
correctly with given parameters.
Intermediate Code Listing:-
Justification:- The Intermediate code listing is updated with expanded
macro code, producing finally assembly code or machine code.This
structure is important for producing correct final output.
48
Formats of Data Structures
MNTC Macro Name MDTC
1
● Macro Name Table (MNT)
ADDS 1
2
.
.
8/2/2024 49
Formats of Data Structures (Cont..)
MDTC Macro Definition Instruction Entry (80 bytes per entry)
1
:
:
:
● Macro Definition Table (MDT)
& Lab ADDS &A1, &A2
2 #0 A 1, #1
3 A 1, #2
4 MEND
5
Formats of Data Structures (Cont..)
Index Formal
Arguments
Actual
Arguments
:
:
● Arguments List Array (ALA)
8/2/2024 51
0 &Lab
1 &A1
2 &A2
3
-
-
-
Pass1
MDTC 1
🡨
MNTC 1
🡨
Read Next Source Card
MACRO
Pseudo
op ?
Read Next Source Card
Enter Macro Name &
Current value of MDTC in
MNT
MNTC MNTC+1
🡨
Prepare ALA
Prepare macro name card
and add into MDT
MDTC MDTC+1
🡨
Read Next Source Card
Substitute index Notation
for Arguments
Enter Line into MDT
MDTC MDTC+1
🡨
MEND
Pseudo
op ?
Write copy of source card
END
Pseudo
op ?
GO TO
PASS2
No
Yes
Yes
No
No
Yes
Add MEND in MDT,
MDTC MDTC+1
🡨
53
8/2/2024 21
Source Code :
MAC START 100
MACRO
&A0 ADD1 &A1, &A2, &A3
&A0 L 1, &A1
L 2, &A2
AR 1, 2
MUL 1, &A3
ST N, 1
MEND
MACRO
SUB &P1, &P2
L 1, &P1
S 1, &P2
ST 2, 1
MEND
TOTAL EQU 5
L 1,D1
SR 2,2
A 1,=F’5’
ADD1 LOOP1, D1, D2, D3
ST 2, 1
AR TOTAL, 2
SUB X, Y
BR 14
D1 DC F’3’
D2 DC F’45’
D3 DC F’21’
X DC F’10’
Y DC F’20’
END
Intermediate Code after pass1:
MAC START 100
TOTAL EQU 5
L 1, D1
SR 2, 2
A 1, =F’5’
ADD1 LOOP1, D1, D2, D3
ST 2, 1
AR TOTAL, 2
SUB X, Y
BR 14
D1 DC F’3’
D2 DC F’45’
D3 DC F’21’
X DC F’10’
Y DC F’20’
END
54
8/2/2024
35
MACRO
&A0 ADD1 &A1, &A2, &A3
&A0 L 1, &A1
L 2, &A2
AR 1, 2
MUL 1, &A3
ST N, 1
MEND
MACRO
SUB &P1, &P2
L 1, &P1
S 1, &P2
ST 2, 1
MEND
47
MNTC Macro
Name
MDTC
1
MDTC Macro Card
1
Macro Definition Table :
Macro Name Table :
Ind
ex
Formal Args Actual
Args
1
2
3
4
5
6
Argument List Array :
55
8/2/2024
34
MNTC Macro
Name
MDTC
1 ADD1 1
2
MDTC Macro Card
1 &A0 ADD1 &A1, &A2, &A3
2
Macro Definition Table :
Macro Name Table :
Index Formal
Args
1 &A0
2 &A1
3 &A2
4 &A3
Argument List Array :
56
8/2/2024
Actual
Args.
34
MNTC Macro
Name
MDTC
1 ADD1 1
2
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3
Macro Definition Table :
Macro Name Table :
Ind
ex
Argument Actual
Args.
1 &A0
2 &A1
3 &A2
4 &A3
5
Argument List Array :
57
8/2/2024
34
MNTC Macro
Name
MDTC
1 ADD1 1
2
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4
Macro Definition Table :
Macro Name Table :
Index Argument
1 &A0
2 &A1
3 &A2
4 &A3
5
Argument List Array :
58
8/2/2024
MNTC Macro
Name
MDTC
1 ADD1 1
2
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4 AR 1, 2
5 MUL 1 , #4
6
Macro Definition Table :
Macro Name Table :
Index Argument
1 &A0
2 &A1
3 &A2
4 &A3
5
Argument List Array :
59
8/2/2024
MNTC Macro
Name
MDTC
1 ADD1 1
2
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4 AR 1,2
5 MUL 1 , #4
6 ST N,1
7
Macro Definition Table :
Macro Name Table :
Index Argument
1 &A0
2 &A1
3 &A2
4 &A3
5
Argument List Array :
60
8/2/2024
MNTC Macro
Name
MDTC
1 ADD1 1
2
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4 AR 1,2
5 MUL 1 , #4
6 ST N,1
7 MEND
8
Macro Definition Table :
Macro Name Table :
Index Argument
1 &A0
2 &A1
3 &A2
4 &A3
5
Argument List Array :
61
8/2/2024
MNTC Macro
Name
MDTC
1 ADD1 1
2 SUB 8
3
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4 AR 1,2
5 MUL 1 , #4
6 ST N,1
7 MEND
8 SUB &P1, &P2
9
Macro Definition Table :
Macro Name Table :
Index Argument
1 &A0
2 &A1
3 &A2
4 &A3
5 &P1
6 &P2
Argument List Array :
62
8/2/2024
MNTC Macro
Name
MDTC
1 ADD1 1
2 SUB 8
3
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4 AR 1,2
5 MUL 1 , #4
6 ST N,1
7 MEND
8 SUB &P1, &P2
9 L 1, #5
10
Macro Definition Table :
Macro Name Table :
Index Argument
1 &A0
2 &A1
3 &A2
4 &A3
5 &P1
6 &P2
Argument List Array :
63
8/2/2024
MNTC Macro
Name
MDTC
1 ADD1 1
2 SUB 8
3
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4 AR 1,2
5 MUL 1 , #4
6 ST N,1
7 MEND
8 SUB &P1, &P2
9 L 1, #5
10 S 1, #6
11
Macro Definition Table :
Macro Name Table :
Index Argument
1 &A0
2 &A1
3 &A2
4 &A3
5 &P1
6 &P2
Argument List Array :
64
8/2/2024
MNTC Macro
Name
MDTC
1 ADD1 1
2 SUB 8
3
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4 AR 1,2
5 MUL 1 , #4
6 ST N,1
7 MEND
8 SUB &P1, &P2
9 L 1, #5
10 S 1, #6
11 ST 2, 1
12
Macro Definition Table :
Macro Name Table :
Index Argument
1 &A0
2 &A1
3 &A2
4 &A3
5 &P1
6 &P2
Argument List Array :
65
8/2/2024
MNTC Macro
Name
MDTC
1 ADD1 1
2 SUB 8
3
MDTC Macro Card
1 &A0 ADD1 &A1,&A2,&A3
2 #1 L 1, #2
3 L 2, #3
4 AR 1,2
5 MUL 1 , #4
6 ST N,1
7 MEND
8 SUB &P1, &P2
9 L 1, #5
10 S 1, #6
11 ST 2, 1
12 MEND
13
Macro Definition Table :
Macro Name Table :
Index Argument Actual
args
1 &A0
2 &A1
3 &A2
4 &A3
5 &P1
6 &P2
Argument List Array :
66
8/2/2024
PASS 2
Read Next Source card
Search MNT for matching operation
code
MDTP MDT Index from
🡨
MNT Entry
Set Up ALA
MDTP MDTP +1
🡨
Get Line From MDT
Substitute arguments from Macro
Call
Macro Name
Found ?
MEND Pseudo
Op?
Write Expanded Source Card
Write Expanded Source Card
END Pseudo
Op?
Supply expanded source file to
Assembler Processing
No
Yes
No
Yes
Yes
No
67
8/2/2024
34
In
de
x
Formal Actual
1 &A0 LOOP
1
2 &A1 D1
3 &A2 D2
4 &A3 D3
5 &P1 X
6 &P2 Y
Expanded Source Code :
MAC START 100
TOTAL EQU 5
L 1, D1
SR 2, 2
A 1, =F’5’
LOOP1 L 1, D1
L 2, D2
AR 1, 2
MUL 1, D3
ST N, 1
ST 2, 1
AR TOTAL, 2
L 1, X
S 1, Y
ST 2, 1
BR 14
D1 DC F’3’
D2 DC F’45’
D3 DC F’21’
X DC F’10’
Y DC F’20’
END
Intermediate Code after pass1
(input file for pass 2):
MAC START 100
TOTAL EQU 5
L 1, D1
SR 2, 2
A 1, =F’5’
ADD1 LOOP1, D1, D2, D3
ST 2, 1
AR TOTAL, 2
SUB X, Y
BR 14
D1 DC F’3’
D2 DC F’45’
D3 DC F’21’
X DC F’10’
Y DC F’20’
END
68
8/2/2024
ALA
MDTP= 1, 2, 3, 4, 5, 6, 7 for ADD1
MDTP= 8, 9, 10, 11, 12, 13 for SUB
Macro calls within Macros
69
8/2/2024
Macro Calls Within Macro
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &ARG1, &ARG2, &ARG3
ADD1 &ARG1 ………………
ADD1 &ARG2 ……………… macro call in macro definition
ADD1 &ARG3 ………………
MEND
70
8/2/2024
▪To handle macro call within macros, macro processor has to work
recursively.
▪It uses stack to keep track of unfinished computations.
▪For every macro call, separate stack frame is created.
▪SP:- It is a Stack Position. It indicates the position or stack frame no. at the
top of the stack. i.e. It is the beginning position of current stack frame.
▪S(SP):- It refers to the beginning of the current stack frame. (i.e. the
contents of the stack at position “SP”.
▪MDLC:- Macro Definition Level Counter
▪N:- no. of arguments in macro call along with label argument.
71
8/2/2024
Macro Calls Within Macro (Cont….)
Macro Processor
MDLC 0
🡨
N 0
🡨
SP -1
🡨
Search MNT for
match with
operation code
S(SP+1) MDT Index
🡨
from MNT entry
SP SP+N+2
🡨
S(SP+N+2) SP
🡨
Set up macro call ALA
in S(SP+2)
…..S(SP+N+1) Where
N= Total no. of
arguments in call
READ *
MACRO
Pseudo
op?
READ *
Enter macro name
and current value
of MDTC in MNT
Prepare macro
definition ALA
Enter macro name
card into MDT
MDLC MDLC+1,
🡨
MNTC=MNTC+1
READ *
Substitute index notation for
argument in definition
Enter line into MDT, MDTC=MDTC+1
MDLC MDLC+1
🡨
MDLC MDLC-1
🡨
MDLC
=0?
Write into
Expanded Source
file
Supply Expanded
source file to
assembler
processing
Macro
Name
found ?
MACRO
Pseudo
op?
MEND
Pseudo
op?
END
Pseudo
op?
B
B
B
A
A A
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
Yes
Macro Calls Within Macro Definition
72
8/2/2024
READ
Subroutine
SP=-1
MDLC
=0?
AIF or
AGO ?
MEND
Pseudo op
?
Read Next
source card
from input file
Return to main
processing
Increment MDT
pointer to next entry
S(SP+1) S(SP+1)+1
🡨
Get next card from
MDT ; Pointer is
S(SP+1)
Substitute arguments
from macro call
S(SP+2) ….S(SP+N+1)
N SP-S(SP)-2
🡨
SP S(SP)
🡨
Process AIF or AGO
set new value to
MDT Pointer ,
S(SP+1)
C
C
No
No
No
No
Yes
Yes
Yes, terminate macro call; pop back
to previous stack frame
Yes
Macro Calls Within Macro Definition (READ
Subroutine)
Macro definition within macro call
73
8/2/2024
-1
:
:
:
S(SP)
S(SP+1)
S(SP+2)
S(SP+3)
:
:
:
:
S(SP+1+N)
:
:
:
Previous Frame(s)
Available for next frame
🡨 Old SP
🡨 MDT Pointer for this frame
🡨 0th
(label) argument
🡨 1st
argument
🡨 (N-1)th argument
:
:
:
:
Macro call ALA
SP…………………….
SP+1 ……………….
SP+2 ……………….
SP+3 ……………….
:
:
:
:
(SP+2)+(N-1) …..
Stack Organization N=No. of arg. On macro line
SP = current value of stack pointer
S(m) =content of mth
position on stack
74
8/2/2024
-1
-1
6
Blank
D1
D2
D3
-1
7
Blank
D1
D2
D3
1
1
Blank
D1
SP=-1
SP=1
SP=7
S(1)
S(2)
S(3)
S(4)
S(5)
S(6)
index
S(1)
.
.
.
.
.
S(7)
S(8)
S(9)
S(10)
.
.
Current stack
frame
previous stack
frame
Macro Call:- ADD1 D1
Call:- ADDS D1, D2, D3
S(1)
75
8/2/2024
MACRO
ADD1 &ARG
L1,&ARG
A 1,=F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1
MNTC NAME MDTC
1
INDEX ARGUME
NT
76
8/2/2024
MACRO
ADD1 &ARG
L1,&ARG
A 1,=F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1
MNTC NAME MDTC
1
INDEX ARGUME
NT
77
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1
INDEX ARGUME
NT
MNTC NAME MDTC
1 ADD1 1
2
78
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1
INDEX ARGUME
NT
1 &ARG
MNTC NAME MDTC
1 ADD1 1
2
79
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0,1
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1 ADD1 &ARG
2
INDEX ARGUME
NT
1 &ARG
MNTC NAME MDTC
1 ADD1 1
2
80
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0,1
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3
INDEX ARGUME
NT
1 &ARG
MNTC NAME MDTC
1 ADD1 1
2
81
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0,1
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4
INDEX ARGUME
NT
1 &ARG
MNTC NAME MDTC
1 ADD1 1
2
82
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0,1
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5
INDEX ARGUME
NT
1 &ARG
MNTC NAME MDTC
1 ADD1 1
2
83
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6
INDEX ARGUME
NT
1 &ARG
MNTC NAME MDTC
1 ADD1 1
2
84
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
MNTC NAME MDTC
1 ADD1 1
2
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6
85
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6
86
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6
87
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0, 1
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7
88
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0, 1
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8
89
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0, 1
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9
90
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0, 1
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10
91
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
92
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNT
C
NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2
3
4
5
6
7
8
9
10
11
12 93
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1, 1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2
3
4
5
6
7
8
9
10
11
12 94
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0
🡪
SP -1, 1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 6
3
4
5
6
7
8
9
10
11
12
95
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0,4
🡪
SP -1,1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 6
3 Blk
4 D1
5 D2
6 D3
7
8
9
10
11
12
96
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0,4
🡪
SP -1, 1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7
8
9
10
11
12 97
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0, 4
🡪
SP -1, 1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7
8
9
10
11
12
ADD1 D1
98
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0, 4
🡪
SP -1, 1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8
9
10
11
12 99
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0, 4
🡪
SP -1, 1, 7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8
9
10
11
12
100
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4
🡪
SP -1,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 1
9
10
11
12
101
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2
🡪
SP -1,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 1
9 Blk
10 D1
11
12
102
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2
🡪
SP -1,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 2
9 Blk
10 D1
11
12
L 1,D1
103
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2
🡪
SP -1,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 3
9 Blk
10 D1
11
12
L 1,D1
A 1,=F’1’
104
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2
🡪
SP -1,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 4
9 Blk
10 D1
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
105
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4
🡪
SP -1,1,7,1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 5
9 Blk
10 D1
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
106
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4
🡪
SP -1,1,7,1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 8
3 Blk
4 D1
5 D2
6 D3
7 1
8 5
9 Blk
10 D1
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
ADD1 D2
107
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2
🡪
SP -1,1,7,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 8
3 Blk
4 D1
5 D2
6 D3
7 1
8 1
9 Blk
10 D2
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
ADD1 D2
108
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2
🡪
SP -1,1,7,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 8
3 Blk
4 D1
5 D2
6 D3
7 1
8 2
9 Blk
10 D2
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
109
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2
🡪
SP -1,1,7,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 8
3 Blk
4 D1
5 D2
6 D3
7 1
8 3
9 Blk
10 D2
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
110
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2
🡪
SP -1,1,7,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 8
3 Blk
4 D1
5 D2
6 D3
7 1
8 4
9 Blk
10 D2
11
12
L 1, D1
A 1, =F’1’
ST 1, D1
L 1, D2
A 1, =F’1’
ST 1, D2
111
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4,
🡪
SP -1,1,7,1,7,1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 8
3 Blk
4 D1
5 D2
6 D3
7 1
8 5
9 Blk
10 D2
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
ST 1,D2
112
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4
🡪
SP -1,1,7,1,7,1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 9
3 Blk
4 D1
5 D2
6 D3
7 1
8 5
9 Blk
10 D2
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
ST 1,D2
ADD1 D3
113
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4,2
🡪
SP -1,1,7,1,7,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 8
3 Blk
4 D1
5 D2
6 D3
7 1
8 1
9 Blk
10 D3
11
12
L 1, D1
A 1, =F’1’
ST 1, D1
L 1, D2
A 1, =F’1’
ST 1,D2
ADD1 D3
114
8/2/2024
MACRO
ADD1 &ARG
L 1, &ARG
A 1, =F’1’
ST 1, &ARG
MEND
MACRO
ADDS &A1, &A2, &A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1, D2, D31
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4,2
🡪
SP -1,1,7,1,7,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1, #1
3 A 1, =F’1’
4 ST 1, #1
5 MEND
6 ADDS &A1, &A2, &A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 2
9 Blk
10 D3
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
ST 1,D2
L 1,D3
115
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4,2
🡪
SP -1,1,7,1,7,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 3
9 Blk
10 D3
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
ST 1,D2
L 1,D3
A 1,=F’1’
116
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4,2
🡪
SP -1,1,7,1,7,1,7
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 4
9 Blk
10 D3
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
ST 1,D2
L 1,D3
A 1,=F’1’
ST 1,D3
117
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4,2,4
🡪
SP -1,1,7,1,7,1,7,1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 7
3 Blk
4 D1
5 D2
6 D3
7 1
8 5
9 Blk
10 D3
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
ST 1,D2
L 1,D3
A 1,=F’1’
ST 1,D3
118
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4,2,4,0
🡪
SP -1,1,7,1,7,1,7,1,-1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 10
3 Blk
4 D1
5 D2
6 D3
7 1
8 5
9 Blk
10 D3
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
ST 1,D2
L 1,D2
A 1,=F’1’
ST 1,D2
119
8/2/2024
MACRO
ADD1 &ARG
L 1,&ARG
A 1,=F’1’
ST 1,&ARG
MEND
MACRO
ADDS &A1,&A2,&A3
ADD1 &A1
ADD1 &A2
ADD1 &A3
MEND
ADDS D1,D2,D3
:
:
END
MDLC 0
🡪
N 0,4,2,4,2,4,2,4,0
🡪
SP -1,1,7,1,7,1,7,1,-1
🡪
INDEX ARGUME
NT
1 &ARG
2 &A1
3 &A2
4 &A3
MNTC NAME MDTC
1 ADD1 1
2 ADDS 6
3
MNT
C
DEFINITION
1 ADD1 &ARG
2 L 1,#1
3 A 1,=F’1’
4 ST 1,#1
5 MEND
6 ADDS &A1,&A2,&A3
7 ADD1 #2
8 ADD1 #3
9 ADD1 #4
10 MEND
11
1 -1
2 10
3 Blk
4 D1
5 D2
6 D3
7 1
8 5
9 Blk
10 D3
11
12
L 1,D1
A 1,=F’1’
ST 1,D1
L 1,D2
A 1,=F’1’
ST 1,D2
L 1,D2
A 1,=F’1’
ST 1,D2
END
120
8/2/2024
Single Pass Macro Processor
121
8/2/2024
(Macro Definition Within Macro)
Example:
---------
---------
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0, 4
BAL 1, *+8
DC A(&Y)
L 15, =V(&SUB)
BALR 14, 15
MEND
MEND
------
DEFINE COS
COS AR Macro call
Outer macro definition
inner
macro
definition
122
8/2/2024
MDLC=0?
A
No
One Pass
Macro
Processor
MDTC 1
🡨
MNTC 1
🡨
MDI “OFF”
🡨
MDLC 0
🡨
READ*
Search MNT for match
with operation code
Macro name
found?
MDI “ON”
🡨
MDTP MDT Index from
🡨
MNT entry
Set up macro call ALA
MACRO name
found?
READ*
Enter macro name and
current value of MDTC in
MNT
MNTC MNTC+1
🡨
Prepare macro definition
ALA
Enter macro name card
into MDT
MDTC MDTC+1
🡨
MDLC MDLC+1
🡨
READ*
Substitute Index
Notation for
Arguments in
definition
Enter line into MDT
MDTC MDTC+1
🡨
MACRO
pseudo-op?
MEND
pseudo-op?
MDLC 🡨
MDLC+1
MDLC 🡨
MDLC - 1
Write into expanded source
card
END
pseudo-
op?
Supply expanded
source file to
assembler processing
A
A
Yes
No
Yes
No
No
No
No
Yes
Yes
Yes
Yes
8/2/2024 123
READ
Subroutine
MDI=“OFF”
?
Read next source card
from i/p file
Return to Main
Processing
Increment MDT pointer to
next entry
MDTO +MDTP+1
🡨
Get Next card
from MDT
Substitute argument
from macro call
MEND
pseudo
op?
AIF or
AGO
Process AIF or AGO,
Set new value to
MDTP
MDLC=
0?
MDI “OFF”
🡨
Yes
Yes Yes
Yes
No
No
No
No
124
8/2/2024
Source Code
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=1
MNTC=1
MDI=“OFF”
MDLC=0
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
--------------------------------------------
MNT
-----------------------------------------------
MNTC NAME MDTC
-----------------------------------------------
-----------------------------------------------
8/2/2024 125
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=1
MNTC=1
MDI=“OFF”
MDLC=0
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
--------------------------------------------
MNT
-----------------------------------------------
MNTC NAME MDTC
-----------------------------------------------
-----------------------------------------------
Reading Next source card due to Macro keyword
8/2/2024 126
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=2
MNTC=2
MDI=“OFF”
MDLC=1
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 127
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=3
MNTC=2
MDI=“OFF”
MDLC=2
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 128
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=4
MNTC=2
MDI=“OFF”
MDLC=2
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 129
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=5
MNTC=2
MDI=“OFF”
MDLC=2
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 130
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=6
MNTC=2
MDI=“OFF”
MDLC=2
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 131
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=7
MNTC=2
MDI=“OFF”
MDLC=2
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 132
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=8
MNTC=2
MDI=“OFF”
MDLC=2
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 133
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=9
MNTC=2
MDI=“OFF”
MDLC=2
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 134
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=10
MNTC=2
MDI=“OFF”
MDLC=1
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15, =V(#0)
8 BALR 14,15
9 MEND
10
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT
8/2/2024 135
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=11
MNTC=2
MDI=“OFF”
MDLC=0
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card after entering line into MDT & MDLC=0
8/2/2024 136
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=11
MNTC=2
MDI=“OFF”
MDLC=0
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card AND write to output file
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
8/2/2024 137
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=11
MNTC=2
MDI=“OFF”
MDLC=0
MDTP=
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 &SUB
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15, =V(#0)
8 BALR 14,15
9 MEND
10 MEND
11
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
Reading Next source card AND write to output file
8/2/2024 138
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=11
MNTC=2
MDI=“ON”
MDLC=0
MDTP=1
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card i.e. call to outer MACRO
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1, 1
8/2/2024 139
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=11
MNTC=2
MDI=“ON”
MDLC=0
MDTP=2
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0 &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15, =V(#0)
8 BALR 14,15
9 MEND
10 MEND
11
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2
-----------------------------------------------
Reading Next source card which expansion of MACRO DEFINE
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
8/2/2024 140
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=12
MNTC=3
MDI=“ON”
MDLC=1
MDTP=3
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card which expansion of MACRO DEFINE
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
8/2/2024 141
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=13
MNTC=3
MDI=“ON”
MDLC=1
MDTP=4
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card which expansion of MACRO DEFINE
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
8/2/2024 142
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=14
MNTC=3
MDI=“ON”
MDLC=1
MDTP=5
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15, =V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card which expansion of MACRO DEFINE
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
8/2/2024 143
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=15
MNTC=3
MDI=“ON”
MDLC=1
MDTP=6
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card which expansion of MACRO DEFINE
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
8/2/2024 144
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=16
MNTC=3
MDI=“ON”
MDLC=1
MDTP=7
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card which expansion of MACRO DEFINE
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
8/2/2024 145
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=17
MNTC=3
MDI=“ON”
MDLC=1
MDTP=8
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card which expansion of MACRO DEFINE
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
8/2/2024 146
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“ON”
MDLC=0
MDTP=9
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15, =V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card which expansion of MACRO DEFINE & MDLC=0
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“OFF”
MDLC=0
MDTP=10
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Expansion of Macro Define completed
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
8/2/2024 148
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“OFF”
MDLC=0
MDTP=10
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 &Y
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15, =V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
Reading Next source card AND write to output file
8/2/2024 149
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“ON”
MDLC=0
MDTP=11
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card which is call to MACRO COS
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1, 1
AR 1, 4
8/2/2024 150
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“ON”
MDLC=0
MDTP=12
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L 15,
=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Expansion of MACRO COS started & written to expanded source file
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
8/2/2024 151
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“ON”
MDLC=0
MDTP=13
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L 15,
=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Expansion of MACRO COS started & written to expanded source file
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
BAL 1,*+8
8/2/2024 152
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“ON”
MDLC=0
MDTP=14
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15, =V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Expansion of MACRO COS started & written to expanded source file
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
BAL 1,*+8
DC A(AR)
8/2/2024 153
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“ON”
MDLC=0
MDTP=15
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Expansion of MACRO COS started & written to expanded source file
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
BAL 1,*+8
DC A(AR)
L 15,=V(COS)
8/2/2024 154
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“ON”
MDLC=0
MDTP=16
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Expansion of MACRO COS started & written to expanded source file
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
BAL 1,*+8
DC A(AR)
L 15,=V(COS)
BALR 14,15
8/2/2024 155
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“OFF”
MDLC=0
MDTP=17
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Expansion of MACRO COS completed & setting MDI to OFF
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
BAL 1,*+8
DC A(AR)
L 15,=V(COS)
BALR 14,15
8/2/2024 156
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“OFF”
MDLC=0
MDTP=17
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card & entering line into expanded source file
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
BAL 1,*+8
DC A(AR)
L 15,=V(COS)
BALR 14,15
L 1,X
8/2/2024
157
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“OFF”
MDLC=0
MDTP=17
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Reading Next source card & entering line into expanded source file
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
BAL 1,*+8
DC A(AR)
L 15,=V(COS)
BALR 14,15
L 1,X
END
8/2/2024 158
MACRO
DEFINE &SUB
MACRO
&SUB &Y
CNOP 0,4
BAL 1,*+8
DC A(&Y)
L 15,=V(&SUB)
BALR 14,15
MEND
MEND
PROG START
SR 1,1
DEFINE COS
AR 1,4
COS AR
L 1,X
END
MDTC=18
MNTC=3
MDI=“OFF”
MDLC=0
MDTP=17
ALA
--------------------------------
INDEX ARG
--------------------------------
#0 COS
#1 AR
---------------------------------
MDT
---------------------------------------------
MDTC DEF
---------------------------------------------
1 DEFINE &SUB
2 MACRO
3 #0/COS &Y
4 CNOP 0,4
5 BAL 1,*+8
6 DC A(&Y)
7 L 15,=V(#0)
8 BALR 14,15
9 MEND
10 MEND
11 COS &Y
12 CNOP 0,4
13 BAL 1,*+8
14 DC A(#1)
15 L
15,=V(COS)
16 BALR 14,15
17 MEND
18
---------------------------------------------
MNT
-----------------------------------------------
MNTC NAME
MDTC
-----------------------------------------------
1 DEFINE 1
2 COS 11
3
-----------------------------------------------
Output Expanded source file is ready (END of processing)
🡪
EXPANDED SOURCE FILE
--------------------------------------------
PROG START
SR 1,1
AR 1,4
CNOP 0,4
BAL 1,*+8
DC A(AR)
L 15,=V(COS)
BALR 14,15
L 1,X
END
8/2/2024 159
Compiler
Definition : Compiler is a program which takes one language (source
program) as input and translates it into an equivalent another language
(target program).
 During this process of translation if some errors are encountered
then compiler displays them as error messages.
 The compiler takes a source program as higher level languages such
as C, PASCAL, FORTRAN and converts it into low level language or a
machine level language such as assembly language.
Compiler
SOURCE PROGRAM
( Normally a program written
in a high-level programming
language)
TARGET PROGRAM
( Normally the equivalent
program in machine code –
relocatable object file)
Error
Messages
160
8/2/2024
Syllabus
Let’s have a look at, what
happens inside Black Box
161
8/2/2024
162
Target Program
Source Program
Lexical Analyzer
1
Syntax Analyzer
2
Semantic Analyzer
3
Intermediate Code
Generator
4
Code Optimizer
5
Code Generator
6
Symbol-table
Manager
Error Handler
Stream of
characters
Parse/syntax
tree
Annotated
tree
Intermediate
code
Optimized Intermediate
code
General Model of Compiler
Analysis/
Language
Dependent/
M/C
Independent
Phases
Synthesis/
Language
Independe
nt/ M/C
Dependent
Phases
163
8/2/2024
Various phases in which compilation is done are as follows –
1. Lexical Analysis :-
 The lexical analysis is also called scanning.
 It the phase of compilation in which the complete source code is
scanned and your source program is broken up into group of strings
called token.
 For example if some assignment statement in your source code is as
follows, total = count + rate * 10
 Then in lexical analysis phase this statement is broken up into series
of tokens as :- 1) The Identifier total = (Id1) 2) The assignment sign
3)The identifier count = (Id2) 4) The Plus sign 5) The Identifier rate =
(Id3) 6) The multiplication sign 7) The constant number 10
 The blank characters which are used in the programming statement
are eliminated during the lexical analysis phase.
164
Phases Of Compiler
2. Syntax Analysis :
• The syntax analysis is also called parsing.
• In this phase the tokens generated by the lexical analyser are
grouped together to form a hierarchical structure called parse tree
or syntax tree
• For the expression total = count + rate*10 parse tree can be
generated as
165
3. Semantic Analysis:-
 Once the syntax is checked in the syntax analyser phase the next
phase i.e. the semantic analysis determines the meaning of the
source string.
 For ex. the example meaning of source string means matching of
parenthesis in the expression, or matching of if ...else statements or
performing arithmetic operations of expressions that are type
compatible, or checking the scope of operation.
166
4. Intermediate Code Generation:-
 The intermediate code is a kind of code which is easy to generate
and this code can be easily converted to target code.
 Intermediate code in three address code form. This is like assembly
language.
 The three address code consists of instructions each of which has at
the most three operands. For example,
t1 : = int to float (10)
t2: = id3 * t1
t3: = id2 + t2
id3 : = t3
167
5. Code Optimization:-
 The code optimization phase attempts to improve the intermediate
code.
 This is necessary to have a faster executing code or less
consumption of memory.
 Thus by optimizing the code the overall running time of the target
program can be improved
 For ex. In this phase total=count + rate*10 will optimize like below
after intermediate code generation:-
t1=id3 * 10.0
id1 = id2 + t1
168
6. Code Generation:-
In code genration phase the target code gets generated. The
intermediate code instructions are translated into sequence of machine
instructions.
MOV id3, R1
MUL #10.0, R1
MOV id2, R2
ADD R2, R1
MOV R1, total
169
The Structure of a Compiler
170
Scanner
[Lexical Analyzer]
Parser
[Syntax Analyzer]
Semantic Process
[Semantic analyzer]
Code Generator
[Intermediate Code Generator]
Code Optimizer
Tokens
Parse tree
Abstract Syntax Tree w/ Attributes
Non-optimized Intermediate Code
Optimized Intermediate
Code
Code Generator
Target machine
code
8/2/2024
Symbol Table
▪Compiler uses symbol table to keep track of scope and binding
information about names.
▪Symbol table is searched every time when a name is encountered in
source text.
▪Changes occur in symbol table if a new name or new info about existing
name is discovered.
▪Two symbol table mechanisms are presented generally, linear list, hash
tables.
▪Compiler should grow S.T. dynamically at compile time or the symbol table
can be kept fixed.
171
8/2/2024
The Symbol Table
▪When identifiers are found, they will be entered into a symbol table, which will hold
all relevant information about identifiers.
▪When the symbol is first encountered by the lexer, we do not yet know the scope.
▪That is determined later by the parser.
▪This information will be used later by the semantic analyzer and the code generator.
Lexical
Analyzer
Semantic
Analyzer
Code
Generator
Symbol
Table
Syntax
Analyzer
172
8/2/2024
Symbol Table Entries
We will store the following information about identifiers.
▪The name (as a string).
▪The data type and value.
▪The block level.
▪Its scope (global, local, or parameter).
▪Its offset from the base pointer (for local variables and
parameters only).
173
8/2/2024
Interpreter
It is a translator (language processor) which directly
executes operations specified in source program on input
supplied by user.
Interpreter
SOURCE PROGRAM
Output
Input
174
8/2/2024
175
Interpreter vs Compiler
Interpreter vs Compiler
Interpreter Compiler
Translates program by one statement at a
time.
Scans the entire program and translates it as
a whole into machine code.
It takes less amount of time to analyze the
source code but the overall execution time
is slower.
It takes large amount of time to analyze the
source code but the overall execution time
is comparatively faster.
No intermediate object code is generated,
hence are memory efficient.
Generates intermediate object code which
further requires linking, hence requires
more memory.
Continues translating the program until the
first error is met, in which case it stops.
Hence debugging is easy.
It generates the error message only after
scanning the whole program. Hence
debugging is comparatively hard.
Programming language like Python, Ruby
use interpreters.
Programming language like C, C++ use
compilers.
176
8/2/2024
Case Study- GNU m4 Macro
Processor
177
8/2/2024
▪m4 is a macro processor, it copies its input to the output, expanding macros as it goes.
▪Macros are either built-in or user-defined, and can take any number of arguments.
▪Besides just doing macro expansion, m4 has built-in functions for including named files in UNIX commands,
doing integer arithmetic, manipulating text in various ways, recursion, etc.
▪m4 can be used either as a front-end to a compiler, or as a macro processor in its own right.
▪The most popular GNU Autoconf pre-requires GNU m4 for generating the ’configure’ scripts.
▪While these people will not themselves program in m4. GNU m4is mostly compatible with the System V,
Release 3 version, except for some minor differences.
▪A General Purpose Macro generator (GPM) an important ancestor of m4 . m4 is mostly SVR4 compatible.
Case Study- GNU m4 Macro
Processor
178
8/2/2024
The format of the m4command is:
m4 [option...] [macro-definitions...] [input-file...]
m4 --def foo --debug a is equivalent to 🡪
m4 --define=foo --debug= -- ./a
1) John Donovan, “Systems Programming”, McGraw Hill, ISBN 978-0--07-460482-3
2) Dhamdhere D., "Systems Programming and Operating Systems", McGraw Hill, ISBN 0 - 07 - 463579 – 4
3) https://www.gnu.org/software/m4/manual/m4.html#Syntax
Ebooks:
▪ https://www.elsevier.com/books/systems-programming/anthony/978-0-12-800729-7
▪ https://www.kobo.com/us/en/ebook/linux-system-programming-1
▪ https://www.e-booksdirectory.com/details.php?ebook=9907
MOOCs Courses Links:
▪ nptel video lecture link: https://nptel.ac.in/courses/106/105/106105214/
▪ https://onlinecourses.nptel.ac.in/noc19_cs50/preview
▪ https://www.udemy.com/course/system-programming/
8/2/2024 179
References
180
8/2/2024
Thank You !!

More Related Content

PPTX
Unit ii-111206004636-phpapp01
PPTX
Unit 4 sp macro
PPT
PDF
Macro-processor
PDF
Handout#05
PDF
handout6.pdf
PPTX
MACRO PROCESSOR
Unit ii-111206004636-phpapp01
Unit 4 sp macro
Macro-processor
Handout#05
handout6.pdf
MACRO PROCESSOR

Similar to SPOS UNIT 2 MACRO NOTES SPOS UNIT 2 MACRO NOTESSPOS UNIT 2 MACRO NOTESSPOS UNIT 2 MACRO NOTES (20)

PPTX
Presentation on macros and macro processor
PPTX
Macro Processor
PDF
Unit 2
PDF
Module 5.pdf
PPT
Macros in system programing
PDF
33443223 system-software-unit-iv
PDF
Handout#04
PPTX
System software - macro expansion,nested macro calls
PPTX
Macro assembler
PPT
Cp0675 03 may-2012-rm04
PPTX
1614745770521_vivek macros.pptx
PPTX
System Programming Unit II
PPTX
System Programming Unit II
PPTX
Preprocessor
DOC
Chapter 5 notes new
PPTX
PPTX
Chap6 procedures &amp; macros
PPTX
Preprocessor directives in c language
PPTX
Preprocessor directives in c laguage
DOC
Chapter 6 notes
Presentation on macros and macro processor
Macro Processor
Unit 2
Module 5.pdf
Macros in system programing
33443223 system-software-unit-iv
Handout#04
System software - macro expansion,nested macro calls
Macro assembler
Cp0675 03 may-2012-rm04
1614745770521_vivek macros.pptx
System Programming Unit II
System Programming Unit II
Preprocessor
Chapter 5 notes new
Chap6 procedures &amp; macros
Preprocessor directives in c language
Preprocessor directives in c laguage
Chapter 6 notes
Ad

Recently uploaded (20)

PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PDF
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
PPTX
web development for engineering and engineering
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PPTX
Welding lecture in detail for understanding
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
Construction Project Organization Group 2.pptx
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
Sustainable Sites - Green Building Construction
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PPT
Project quality management in manufacturing
PDF
Well-logging-methods_new................
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
PPTX
CH1 Production IntroductoryConcepts.pptx
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
BMEC211 - INTRODUCTION TO MECHATRONICS-1.pdf
web development for engineering and engineering
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
Welding lecture in detail for understanding
Lecture Notes Electrical Wiring System Components
Construction Project Organization Group 2.pptx
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Sustainable Sites - Green Building Construction
R24 SURVEYING LAB MANUAL for civil enggi
Project quality management in manufacturing
Well-logging-methods_new................
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Internet of Things (IOT) - A guide to understanding
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
CH1 Production IntroductoryConcepts.pptx
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
Ad

SPOS UNIT 2 MACRO NOTES SPOS UNIT 2 MACRO NOTESSPOS UNIT 2 MACRO NOTESSPOS UNIT 2 MACRO NOTES

  • 1. Course Objectives: ▪To get acquainted with the basics of System Programming. ▪To acquire knowledge of data structures used in the design of System Software. ▪To be familiar with the format of object modules, the functions of linking, relocation, and loading. ▪To comprehend the structures and functions of Operating Systems and process management. ▪To deal with concurrency and deadlock in the Operating System. ▪To learn and understand memory management of Operating System. 310243: Systems Programming and Operating System 1 8/2/2024
  • 2. Course Outcomes: On completion of the course, learners should be able to- CO1: Analyze and synthesize basic System Software and its functionality. CO2: Identify suitable data structures and Design & Implement various System Software CO3: Compare different loading schemes and analyze the performance of linker and loader CO4: Implement and Analyze the performance of process scheduling algorithms CO5: Identify the mechanism to deal with deadlock and concurrency issues CO6: Demonstrate memory organization and memory management policies 310243: Systems Programming and Operating System 2 8/2/2024
  • 3. Macro Processor and Compiler 3 8/2/2024 UNIT-II
  • 4. Syllabus Introduction, Features of a Macro facility: Macro instruction arguments, Conditional Macro expansion, Macro calls within Macros, Macro instructions defining Macro, Design of two pass Macro processor, Concept of single pass Macro processor Introduction to Compilers: Phases of Compiler with one example, Comparison of Compiler and Interpreter #Exemplar/Case Studies: GNU M4 Macro Processor Mapping of Course Outcomes for Unit II: CO1, CO2, CO3 4 8/2/2024
  • 5. Introduction to Macro Processor ◦ Macro instructions are considered as the extension of the basic assembler language. ◦ A macro instruction is convenient for the programmer in terms of notation. ◦ A macro is a single-line abbreviation used for a group of instructions. ◦ It allows the programmer to write shorthand version of a program (module programming) ◦ The macro processor replaces each macro call with the corresponding sequence of statements (expanding) 8/2/2024 5
  • 6. Macro Processor Working of Macro Processor 1. Recognizes macro definitions 2. Saves the macro definition 3. Recognizes macro calls 4. Expands macro calls Source Code (with macro) Macro Processor Expanded Code Compiler or Assembler obj 6 8/2/2024
  • 7. Macro Definition MACRO Start of Definition <Macro Name> <List of Parameters [p1, p2, …pn]> Macro Name (with label or argument(s) which is optional) ------------- ------------- Sequence to be abbreviated ------------- MEND End of Definition 7 8/2/2024
  • 8. Macro Definition MACRO (Start of Definition):-This keyword indicates the beginning of a macro definition. It signals to the macro processor that what follows is a macro to be defined. <Macro Name> <List of Parameters [p1, p2, …pn]>:-This is the identifier you use to call the macro. These are optional and define the placeholders that can be used within the macro body Sequence to be abbreviated:-This section contains the actual code or instructions that the macro will expand into. It represents the body of the macro and includes any logic or operations defined by the macro. MEND (End of Definition):-This keyword signifies the end of the macro definition. It tells the macro processor that the macro definition is complete, and any subsequent code will not be part of this macro. 8
  • 9. Macro Definition (cont..) Example: MACRO ADDS &arg1, &arg2, &arg3 L 1, &arg1 A 1, &arg2 ST 1, &arg3 MEND 8/2/2024 9
  • 10. Macro Call <Macro Name> <List of Actual parameters[ a1, a2, …an]> For Ex.🡪 ADDS DATA1, DATA2, DATA3 A macro call is a statement in the source code that invokes a previously defined macro, replacing it with the macro’s body or definition. 8/2/2024 10
  • 11. Macro Expansion //Source Code with Macro definition & macro call MACRO ADDS &arg1,&arg2,&arg3 L 1, &arg1 A 1, &arg2 ST 1, &arg3 MEND PROG START 0 BALR 15,0 USING *,15 ADDS DATA1, DATA2, DATA3 SR 4,4 DATA1 DC F’3’ DATA2 DC F’4’ DATA3 DS 1F END // Processed code after macro Expansion PROG START 0 BALR 15,0 USING *,15 L 1, DATA1 A 1, DATA2 ST 1,DATA3 SR 4,4 DATA1 DC F’3’ DATA2 DC F’4’ DATA3 DS 1F END Macro Expansion 8/2/2024 11
  • 12. Macro Expansion (cont..) Source program with Macro Definition & Macro call MACRO ADDS &arg1,&arg2,&arg3 L 1, &arg1 A 1, &arg2 ST 1, &arg3 MEND PROG START 0 BALR 15,0 USING *,15 ADDS DATA1, DATA2, DATA3 SR 4,4 ADDS D4, D5, D6 DATA1 DC F’3’ DATA2 DC F’4’ DATA3 DS 1F D4 DC F’1’ D5 DC F’2’ D6 DS 1F END Source program after macro expansion PROG START 0 BALR 15,0 USING *,15 L 1, DATA1 A 1, DATA2 ST 1, DATA3 SR 4, 4 L 1, D4 A 1, D5 ST 1, D6 DATA1 DC F’3’ DATA2 DC F’4’ DATA3 DS 1F D4 DC F’1’ D5 DC F’2’ D6 DS 1F END 1st Macro call 2nd Macro call 12 MACRO ADDS &arg1,&arg2,&arg3 L 1, &arg1 A 1, &arg2 ST 1, &arg3 MEND
  • 13. • Macro expansion in programming generally refers to the process of replacing macros with their defined code. • Definition Replacement: A macro is a shorthand for a code snippet or a set of instructions. During macro expansion, the preprocessor replaces macro names with their corresponding code as defined in the macro's definition. • Tasks involved in macro expansion :- • 1. Identify the macro calls in the program. • 2. The values of formal parameters are identified. • 3. Maintain the values of expansion time variables declared in a macro. • 4. Expansion time control flow is organized. • 5 . Determining the values of sequencing symbols • 6 . Expansion of a model statement is performed 13
  • 14. Parameter Substitution ▪Positional Formal Argument ▪Keyword Argument ▪Default Argument 8/2/2024 14
  • 15. Positional Formal Argument // MACRO DEFINITION MACRO ADDS &arg1, &arg2, &arg3 L 1, &arg1 A 1, &arg2 ST 1, &arg3 MEND /MACRO CALL ADDS DATA1, DATA2, DATA3 Formal Parameter Actual Parameter &arg1 DATA1 &arg2 DATA2 &arg3 DATA3 8/2/2024 15
  • 16. Keyword Argument //MACRO DEFINITION MACRO ADDS &arg1=, &arg2=, &arg3= L 1, &arg1 A 1, &arg2 ST 1, &arg3 MEND //MACRO CALL ADDS &arg1=DATA1, &arg2= DATA2, &arg3= DATA3 …… ADDS &arg2= DATA2, &arg3= DATA3, &arg1=DATA1 Formal Parameter Actual Parameter &arg1 DATA1 &arg2 DATA2 &Arg3 DATA3 8/2/2024 16
  • 17. Default Argument //MACRO DEFINITION MACRO ADDS &arg1=, &arg2=, &arg3=4 L 1, &arg1 A 1, &arg2 ST 1, &arg3 MEND /MACRO CALL ADDS &arg1=D1, &arg2= D2 …… ADDS &arg2= D2, &arg1=D1 ADDS &arg2= D2, &arg1=D1, &arg3=100 Formal Parameter Value &arg1 D1 &arg2 D2 &arg3 100 //it overrides default value 8/2/2024 17
  • 18. Macro with Mixed Parameter Lists Macro can use all three types of parameters together Example:- //MACRO DEFINITION MACRO ADDS &arg1, &arg2=45, &arg3= L 1, &arg1 A 1, &arg2 ST 1,&arg3 MEND //MACRO CALL ADDS D1, &arg3= D3 …… ADDS D1, &arg3=D6, &arg2=400 8/2/2024 18
  • 19. 19 Macro Function Macro is preprocessed. Function is compiled. Macro does not support type checking. Function support type checking. Program length increases. Program length remain same. There is side effect while using macro. No side effect while using function. Execution is faster. Execution is slower. Useful where small source code appears many time. Useful where large source code appears many time. Macro does not check compile errors. Function checks compile errors.
  • 20. 20
  • 21. Macro vs. Subroutine Macro: ▪ Every macro call is replaced by its definition. ▪ After expansion of program, length increases. So, more memory is required. ▪ Processing time is less as compared to subroutine processing, because there is no context switching during macro processing. Subroutine ▪ Every Subroutine (function) call transfers control to the first instruction of subroutine which is called. ▪ After processing subroutine call, the program size remains same. ▪ Processing time is increased due to context switching. 8/2/2024 21
  • 22. Advanced Macro Facilities ▪Macro Calls within Macros (Nested Macro Calls) ▪Macro instruction defining Macros ▪Conditional Macro Expansion ▪Expansion time variables ▪Expansion time Loops 8/2/2024 22
  • 23. Macro Calls within Macros (Nested Macro Calls) Macro definition of one macro may generate call to another macro is called as nested macro calls. Example. MACRO ADD1 &arg L 1, &arg A 1, =F’1’ ST 1, &arg MEND MACRO ADDS &arg1, &arg2 ,&arg3 ADD1 &arg1 ADD1 &arg2 MEND Call to macro 8/2/2024 23
  • 24. Macro Calls within Macros (Nested Macro Calls) (cont..) //Source Code : : MACRO ADD1 &arg L 1, &arg A 1,=F’1’ ST 1,&arg MEND MACRO ADDS &a1,&a2,&a3 ADD1 &a1 ADD1 &a2 CMP 1,&a3 MEND : : ADDS A, B, C : : A DC F’3’ B DC F’13’ C DC F’6’ : : // Level-1 Expansion of Source Code : : : : : : : : : : : : ADD1 A ADD1 B CMP 1, C : : : : Expansion Of ADDS // Level-2 Expansion of Source Code : : : : : : : : : L 1, A A 1, =F’1’ ST 1, A L 1, B A 1, =F’1’ ST 1, B CMP 1, C : : : : Expansion of ADD1 8/2/2024 24
  • 25. Macro Instruction Defining Macros Macro definition may defines another macro Ex. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,V(&SUB) BALR14,15 MEND MEND Macro calls ◦ DEFINE COS ◦ COS AR Inner Macro Outer Macro 8/2/2024 25
  • 26. Conditional Macro Expansion AIF & AGO are used for conditional macro expansion 8/2/2024 26
  • 27. Conditional Macro Expansion • Conditional macro expansion involves using conditional directives within a macro to control which instructions are included in the expansion. • These directives allow the macro to expand differently depending on the values of parameters or other conditions. Implementation of conditional macro expansion:- 1. IF-ELSE-ENDIF structure :-When an IF statement is encountered during the expansion of a macro, the specified Boolean expression is evaluated. a. For TRUE : The macro processor continues to process lines from DEFTAB until it encounters the next ELSE or ENDIF statement. If ELSE is encountered, then skips to ENDIF. 27 Conditional Macro Expansion
  • 28. b. For FALSE : The macro processor skips ahead in DEFTAB until it finds the next ELSE or ENDIF statement. 2. WHILE-ENDW structure :- When WHILE statement is encountered during the expansion of a macro, the specified Boolean expression is evaluated. For TRUE : The macro processor continues to process lines from DEFTAB unit it encounters the next ENDW stetement. When ENDW is encountered, the macro processor returns to the proceding WHILE, re - evaluates the Boolean expression and takes action based on the new value. For FALSE : The macro processor skips ahead in DERTAB until it finds the next ENDW statement and then resumes normal macro expansion. 28
  • 29. For ex. MYMACRO MACRO CONDITION IF CONDITION MOV AX, 1 ELSE MOV AX, 0 ENDIF ENDM Here, • If ‘CONDITION’ is true when ‘MYMACRO’ is called, the macro will expand to include ‘MOV AX,1’ • If ‘CONDIYION’ is false the macro will expand to include ‘MOV AX, 0’. 29
  • 30. Need of Conditional Macro Expansion Lets consider example: : : LOOP1 A 1, A1 A 2, A2 A 3, A3 : : LOOP2 A 1, A3 A 2, A2 : : LOOP3 A 1, A1 : : A1 DC F’5’ A2 DC F’15’ A3 DC F’10’ 8/2/2024 30
  • 31. MACRO &a0 VARY &CNT, &a1, &a2, &a3 &a0 A 1, &a1 AIF (&CNT EQ 1) .FINI A 2,& a2 AIF (&CNT EQ 2) .FINI A 3, &a3 .FINI MEND : : LOOP1 VARY 3, A1, A2, A3 : : LOOP2 VARY 2, A3, A2 : : LOOP3 VARY 1, A1 : : A1 DC F’5’ A2 DC F’15’ Conditional Macro Expansion // Expanded Source code : LOOP1 A 1, A1 A 2, A2 A 3, A3 : : LOOP2 A 1, A3 A 2, A2 : : LOOP3 A 1, A1 : : A1 DC F’5’ A2 DC F’15’ A3 DC F’10’ 8/2/2024 31
  • 32. AIF , .FINI, AGO .FINI :- it is macro label and don’t appear in output of macro processor. AIF(&count EQ 1).FINI:- The pseuodo op directs the macro processor to skip the statement labeled .FINI, if “&count” value is 1; otherwise , the macro processor is to continue with the statement following AIF pseuodo op. AGO:- it is unconditional branch pseudo op like “go to”. 32 8/2/2024
  • 33. MACRO WITHIN MACROS Macro Within a Macro • When a macro is defined within another macro, it means that the inner macro can be invoked as part of the expansion of the outer macro. • The outer macro will include the invocation of the inner macro, and during expansion, the inner macro will also be expanded. Why Use Macro Within a Macro? • Modularity: Each operation is defined separately, making the code easier to read and maintain. • Reusability: The inner macro can be reused in different parts of the outer macro or even in other macros. • Clarity: It helps in organizing the code better by separating different logical operations into distinct macros. 33
  • 34. FOR EX. INCREMENT MACRO REG INC REG ENDM DOUBLE_INCREMENT MACRO REG INCREMENT REG INCREMENT REG ENDM Here, In this ex. ‘INCREMENT’ is simple macro that increment value of register. ‘DOUBLE_INCREMENT’ is another macro that uses the ‘INCREMENT’ macro twice to increment the register twice. When ‘DOUBLE_INCREMENT’ is invoked, it expands to two calls of ‘INCREMENT’ macro. 34
  • 35. In a single-pass macro processor, the macro processing is done in a single pass over the source code. This means that the processor reads the entire source code only once to perform macro expansion and other tasks. Macro processor uses three main data structure:- 1. Definition table (DEF TAB) :- • Stores the macro definition including macro prototype and macro body. • Comment lines are omitted. • References to the macro instruction parameters are converted to a positional notation for efficiency in substituting arguments. 35 Concept of Single pass macro Processor
  • 36. 2. NAMTAB:- • Stores macro names. • Serves as an index to DEFTAB. • Pointers to the beginning and the end of the macro definition (DEFTAB). 3. ARGTAB:- • Stores the arguments of macro invocation according to their positions in the argument list. • As the macro is expanded, arguments from ARGTAB are substituted for the corresponding parameters in the macro body. 36
  • 37. 37 ALGORITHM OF SINGLE PASS MACRO PROCESOOR:- •Initialization: •MDT: Empty initially. •MNT: Empty initially. •Symbol Table: Empty initially. •Read Input Line: •Fetch the next line from the source code. •Process Macro Definition: •Identify Definition: Check if the line starts with a macro definition keyword (e.g., MACRO). •Store Definition: •Macro Name Table (MNT): Store the macro name and its starting location in MDT. •Macro Definition Table (MDT): Store the macro body. •End of Macro: Continue reading lines until the END directive or end of macro definition. •Process Macro Invocation: •Identify Invocation: Check if the line contains a macro invocation. •Lookup: Find the macro definition from MNT. •Expand: •Parameter Substitution: Replace formal parameters with actual arguments. •Insert Expanded Code: Replace the macro invocation line with the expanded code. •Update Symbol Table: Add any new symbols introduced by the macro. •Process Normal Code: •Directly process any lines that are not macro definitions or invocations. •Repeat: •Continue until the entire source code has been processed. •Output: •Produce the final output with all macros expanded, ready for further processing or assembly.
  • 38. A two-pass macro processor is an assembler designed to handle macros in two distinct stages, or "passes," over the source code. This approach is used to ensure that all macro definitions are correctly expanded and that macro invocations are appropriately processed. Pass 1: Definition and Cataloging Purpose: • The first pass identifies all macro definitions and macro invocations. It records macro definitions and their locations and prepares for the macro expansion in the second pass. Pass 2: Expansion and Final Assembly Purpose: • The second pass replaces the macro placeholders in the intermediate code with the actual expanded code from the MDT, taking into account the parameter values recorded in Pass 1. 38 Design of Two pass macro Processor
  • 39. Design of Two pass macro Processor Pass-1 : ◦ Recognizes Macro Definition ◦ Stores Macro Instruction Definitions Pass-2 : ◦ Recognizes Macro Calls ◦ Expands calls and substitute actual arguments 8/2/2024 39
  • 40. Pass-1 Data structures/ programs : ◦ Source program with macro definitions and macro calls ◦ Output file without macro definitions & with macro calls ◦ Macro Definition Table (MDT):- Purpose: Stores the actual definitions of macros. ◦ Macro Name Table (MNT):- Purpose: Maps macro names to their definitions in MDT. ◦ Argument List Array (ALA) :- Purpose: Stores information about macro parameters and their values. ◦ Macro Definition Table Counter (MDTC) :- MDTC is used to indicate the next available entry in the MDT. ◦ Macro Name Table Counter (MNTC):- MNTC is used to indicate the next available entry in the MNT. 40 Design of Two pass macro Processor
  • 41. Pass-2 Data structures/programs : ◦ Input file without macro definitions & with macro calls ◦ Expanded output file without macro definitions & macro calls (Free from Macro) ◦ Refers Macro Definition Table (MDT) created by Pass-1 ◦ Refers Macro Name Table (MNT) created by Pass-1 ◦ Argument List Array (ALA) to map formal parameters with actual ◦ Macro Definition Table Pointer (MDTP): -MDTP is used to indicate the next line of text to be used during macro expansion. 41
  • 42. 42
  • 43. 43 Pass 1 Flowchart of 2 pass macro processor
  • 44. 44
  • 45. 45 Pass 2 Flowchart of 2 pass macro processor
  • 46. Q). Justify which data structures are implemented at that time of processing Macro definition, Macro call and Macro Expansion inn 2 pass macro processor. 1. Processing Macro Definition:- Macro Definition Table (MDT): ◦ Justification: MDT is essential for storing macro definitions so that they can be referenced and expanded during the second pass. Macro Name Table (MNT): ◦ Justification: MNT helps in quickly locating the macro definition in MDT during the second pass. Argument List Array (ALA): ◦ Justification: ALA is used to keep track of actual arguments supplied during macro calls, which will be substituted into the macro body during expansion. 46
  • 47. 2. Processing Macro Call:- Macro Name Table (MNT): o Justification: MNT is used to quickly find the macro definition in MDT when a macro call is encountered. It links the macro name to its definition location. Argument List Array (ALA): ◦ Justification: PT is used to capture the arguments provided in the macro call, which will later be substituted into the macro definition during the expansion phase. Intermediate Code Listing: ◦ Justification: The intermediate code listing helps in maintaining the structure of the source code with markers for where macros are invoked. 47
  • 48. 3. Processing Macro Expansion:- Macro Definition Table (MDT): Justification: MDT is used to fetch the macro body, which will be modified by substituting parameters from PT. Argument List Array (ALA):- Justification:- ALA is used to replace argument placeholder in macro body with actual argument . This ensures macro is expanded correctly with given parameters. Intermediate Code Listing:- Justification:- The Intermediate code listing is updated with expanded macro code, producing finally assembly code or machine code.This structure is important for producing correct final output. 48
  • 49. Formats of Data Structures MNTC Macro Name MDTC 1 ● Macro Name Table (MNT) ADDS 1 2 . . 8/2/2024 49
  • 50. Formats of Data Structures (Cont..) MDTC Macro Definition Instruction Entry (80 bytes per entry) 1 : : : ● Macro Definition Table (MDT) & Lab ADDS &A1, &A2 2 #0 A 1, #1 3 A 1, #2 4 MEND 5
  • 51. Formats of Data Structures (Cont..) Index Formal Arguments Actual Arguments : : ● Arguments List Array (ALA) 8/2/2024 51 0 &Lab 1 &A1 2 &A2 3 - - -
  • 52. Pass1 MDTC 1 🡨 MNTC 1 🡨 Read Next Source Card MACRO Pseudo op ? Read Next Source Card Enter Macro Name & Current value of MDTC in MNT MNTC MNTC+1 🡨 Prepare ALA Prepare macro name card and add into MDT MDTC MDTC+1 🡨 Read Next Source Card Substitute index Notation for Arguments Enter Line into MDT MDTC MDTC+1 🡨 MEND Pseudo op ? Write copy of source card END Pseudo op ? GO TO PASS2 No Yes Yes No No Yes Add MEND in MDT, MDTC MDTC+1 🡨 53 8/2/2024 21
  • 53. Source Code : MAC START 100 MACRO &A0 ADD1 &A1, &A2, &A3 &A0 L 1, &A1 L 2, &A2 AR 1, 2 MUL 1, &A3 ST N, 1 MEND MACRO SUB &P1, &P2 L 1, &P1 S 1, &P2 ST 2, 1 MEND TOTAL EQU 5 L 1,D1 SR 2,2 A 1,=F’5’ ADD1 LOOP1, D1, D2, D3 ST 2, 1 AR TOTAL, 2 SUB X, Y BR 14 D1 DC F’3’ D2 DC F’45’ D3 DC F’21’ X DC F’10’ Y DC F’20’ END Intermediate Code after pass1: MAC START 100 TOTAL EQU 5 L 1, D1 SR 2, 2 A 1, =F’5’ ADD1 LOOP1, D1, D2, D3 ST 2, 1 AR TOTAL, 2 SUB X, Y BR 14 D1 DC F’3’ D2 DC F’45’ D3 DC F’21’ X DC F’10’ Y DC F’20’ END 54 8/2/2024 35 MACRO &A0 ADD1 &A1, &A2, &A3 &A0 L 1, &A1 L 2, &A2 AR 1, 2 MUL 1, &A3 ST N, 1 MEND MACRO SUB &P1, &P2 L 1, &P1 S 1, &P2 ST 2, 1 MEND 47
  • 54. MNTC Macro Name MDTC 1 MDTC Macro Card 1 Macro Definition Table : Macro Name Table : Ind ex Formal Args Actual Args 1 2 3 4 5 6 Argument List Array : 55 8/2/2024 34
  • 55. MNTC Macro Name MDTC 1 ADD1 1 2 MDTC Macro Card 1 &A0 ADD1 &A1, &A2, &A3 2 Macro Definition Table : Macro Name Table : Index Formal Args 1 &A0 2 &A1 3 &A2 4 &A3 Argument List Array : 56 8/2/2024 Actual Args. 34
  • 56. MNTC Macro Name MDTC 1 ADD1 1 2 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 Macro Definition Table : Macro Name Table : Ind ex Argument Actual Args. 1 &A0 2 &A1 3 &A2 4 &A3 5 Argument List Array : 57 8/2/2024 34
  • 57. MNTC Macro Name MDTC 1 ADD1 1 2 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 Macro Definition Table : Macro Name Table : Index Argument 1 &A0 2 &A1 3 &A2 4 &A3 5 Argument List Array : 58 8/2/2024
  • 58. MNTC Macro Name MDTC 1 ADD1 1 2 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 AR 1, 2 5 MUL 1 , #4 6 Macro Definition Table : Macro Name Table : Index Argument 1 &A0 2 &A1 3 &A2 4 &A3 5 Argument List Array : 59 8/2/2024
  • 59. MNTC Macro Name MDTC 1 ADD1 1 2 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 AR 1,2 5 MUL 1 , #4 6 ST N,1 7 Macro Definition Table : Macro Name Table : Index Argument 1 &A0 2 &A1 3 &A2 4 &A3 5 Argument List Array : 60 8/2/2024
  • 60. MNTC Macro Name MDTC 1 ADD1 1 2 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 AR 1,2 5 MUL 1 , #4 6 ST N,1 7 MEND 8 Macro Definition Table : Macro Name Table : Index Argument 1 &A0 2 &A1 3 &A2 4 &A3 5 Argument List Array : 61 8/2/2024
  • 61. MNTC Macro Name MDTC 1 ADD1 1 2 SUB 8 3 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 AR 1,2 5 MUL 1 , #4 6 ST N,1 7 MEND 8 SUB &P1, &P2 9 Macro Definition Table : Macro Name Table : Index Argument 1 &A0 2 &A1 3 &A2 4 &A3 5 &P1 6 &P2 Argument List Array : 62 8/2/2024
  • 62. MNTC Macro Name MDTC 1 ADD1 1 2 SUB 8 3 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 AR 1,2 5 MUL 1 , #4 6 ST N,1 7 MEND 8 SUB &P1, &P2 9 L 1, #5 10 Macro Definition Table : Macro Name Table : Index Argument 1 &A0 2 &A1 3 &A2 4 &A3 5 &P1 6 &P2 Argument List Array : 63 8/2/2024
  • 63. MNTC Macro Name MDTC 1 ADD1 1 2 SUB 8 3 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 AR 1,2 5 MUL 1 , #4 6 ST N,1 7 MEND 8 SUB &P1, &P2 9 L 1, #5 10 S 1, #6 11 Macro Definition Table : Macro Name Table : Index Argument 1 &A0 2 &A1 3 &A2 4 &A3 5 &P1 6 &P2 Argument List Array : 64 8/2/2024
  • 64. MNTC Macro Name MDTC 1 ADD1 1 2 SUB 8 3 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 AR 1,2 5 MUL 1 , #4 6 ST N,1 7 MEND 8 SUB &P1, &P2 9 L 1, #5 10 S 1, #6 11 ST 2, 1 12 Macro Definition Table : Macro Name Table : Index Argument 1 &A0 2 &A1 3 &A2 4 &A3 5 &P1 6 &P2 Argument List Array : 65 8/2/2024
  • 65. MNTC Macro Name MDTC 1 ADD1 1 2 SUB 8 3 MDTC Macro Card 1 &A0 ADD1 &A1,&A2,&A3 2 #1 L 1, #2 3 L 2, #3 4 AR 1,2 5 MUL 1 , #4 6 ST N,1 7 MEND 8 SUB &P1, &P2 9 L 1, #5 10 S 1, #6 11 ST 2, 1 12 MEND 13 Macro Definition Table : Macro Name Table : Index Argument Actual args 1 &A0 2 &A1 3 &A2 4 &A3 5 &P1 6 &P2 Argument List Array : 66 8/2/2024
  • 66. PASS 2 Read Next Source card Search MNT for matching operation code MDTP MDT Index from 🡨 MNT Entry Set Up ALA MDTP MDTP +1 🡨 Get Line From MDT Substitute arguments from Macro Call Macro Name Found ? MEND Pseudo Op? Write Expanded Source Card Write Expanded Source Card END Pseudo Op? Supply expanded source file to Assembler Processing No Yes No Yes Yes No 67 8/2/2024 34
  • 67. In de x Formal Actual 1 &A0 LOOP 1 2 &A1 D1 3 &A2 D2 4 &A3 D3 5 &P1 X 6 &P2 Y Expanded Source Code : MAC START 100 TOTAL EQU 5 L 1, D1 SR 2, 2 A 1, =F’5’ LOOP1 L 1, D1 L 2, D2 AR 1, 2 MUL 1, D3 ST N, 1 ST 2, 1 AR TOTAL, 2 L 1, X S 1, Y ST 2, 1 BR 14 D1 DC F’3’ D2 DC F’45’ D3 DC F’21’ X DC F’10’ Y DC F’20’ END Intermediate Code after pass1 (input file for pass 2): MAC START 100 TOTAL EQU 5 L 1, D1 SR 2, 2 A 1, =F’5’ ADD1 LOOP1, D1, D2, D3 ST 2, 1 AR TOTAL, 2 SUB X, Y BR 14 D1 DC F’3’ D2 DC F’45’ D3 DC F’21’ X DC F’10’ Y DC F’20’ END 68 8/2/2024 ALA MDTP= 1, 2, 3, 4, 5, 6, 7 for ADD1 MDTP= 8, 9, 10, 11, 12, 13 for SUB
  • 68. Macro calls within Macros 69 8/2/2024
  • 69. Macro Calls Within Macro MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &ARG1, &ARG2, &ARG3 ADD1 &ARG1 ……………… ADD1 &ARG2 ……………… macro call in macro definition ADD1 &ARG3 ……………… MEND 70 8/2/2024
  • 70. ▪To handle macro call within macros, macro processor has to work recursively. ▪It uses stack to keep track of unfinished computations. ▪For every macro call, separate stack frame is created. ▪SP:- It is a Stack Position. It indicates the position or stack frame no. at the top of the stack. i.e. It is the beginning position of current stack frame. ▪S(SP):- It refers to the beginning of the current stack frame. (i.e. the contents of the stack at position “SP”. ▪MDLC:- Macro Definition Level Counter ▪N:- no. of arguments in macro call along with label argument. 71 8/2/2024 Macro Calls Within Macro (Cont….)
  • 71. Macro Processor MDLC 0 🡨 N 0 🡨 SP -1 🡨 Search MNT for match with operation code S(SP+1) MDT Index 🡨 from MNT entry SP SP+N+2 🡨 S(SP+N+2) SP 🡨 Set up macro call ALA in S(SP+2) …..S(SP+N+1) Where N= Total no. of arguments in call READ * MACRO Pseudo op? READ * Enter macro name and current value of MDTC in MNT Prepare macro definition ALA Enter macro name card into MDT MDLC MDLC+1, 🡨 MNTC=MNTC+1 READ * Substitute index notation for argument in definition Enter line into MDT, MDTC=MDTC+1 MDLC MDLC+1 🡨 MDLC MDLC-1 🡨 MDLC =0? Write into Expanded Source file Supply Expanded source file to assembler processing Macro Name found ? MACRO Pseudo op? MEND Pseudo op? END Pseudo op? B B B A A A Yes Yes Yes Yes Yes No No No No No No Yes Macro Calls Within Macro Definition 72 8/2/2024
  • 72. READ Subroutine SP=-1 MDLC =0? AIF or AGO ? MEND Pseudo op ? Read Next source card from input file Return to main processing Increment MDT pointer to next entry S(SP+1) S(SP+1)+1 🡨 Get next card from MDT ; Pointer is S(SP+1) Substitute arguments from macro call S(SP+2) ….S(SP+N+1) N SP-S(SP)-2 🡨 SP S(SP) 🡨 Process AIF or AGO set new value to MDT Pointer , S(SP+1) C C No No No No Yes Yes Yes, terminate macro call; pop back to previous stack frame Yes Macro Calls Within Macro Definition (READ Subroutine) Macro definition within macro call 73 8/2/2024
  • 73. -1 : : : S(SP) S(SP+1) S(SP+2) S(SP+3) : : : : S(SP+1+N) : : : Previous Frame(s) Available for next frame 🡨 Old SP 🡨 MDT Pointer for this frame 🡨 0th (label) argument 🡨 1st argument 🡨 (N-1)th argument : : : : Macro call ALA SP……………………. SP+1 ………………. SP+2 ………………. SP+3 ………………. : : : : (SP+2)+(N-1) ….. Stack Organization N=No. of arg. On macro line SP = current value of stack pointer S(m) =content of mth position on stack 74 8/2/2024
  • 75. MACRO ADD1 &ARG L1,&ARG A 1,=F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 MNTC NAME MDTC 1 INDEX ARGUME NT 76 8/2/2024
  • 76. MACRO ADD1 &ARG L1,&ARG A 1,=F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 MNTC NAME MDTC 1 INDEX ARGUME NT 77 8/2/2024
  • 77. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 INDEX ARGUME NT MNTC NAME MDTC 1 ADD1 1 2 78 8/2/2024
  • 78. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 INDEX ARGUME NT 1 &ARG MNTC NAME MDTC 1 ADD1 1 2 79 8/2/2024
  • 79. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0,1 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 ADD1 &ARG 2 INDEX ARGUME NT 1 &ARG MNTC NAME MDTC 1 ADD1 1 2 80 8/2/2024
  • 80. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0,1 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 INDEX ARGUME NT 1 &ARG MNTC NAME MDTC 1 ADD1 1 2 81 8/2/2024
  • 81. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0,1 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 INDEX ARGUME NT 1 &ARG MNTC NAME MDTC 1 ADD1 1 2 82 8/2/2024
  • 82. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0,1 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 INDEX ARGUME NT 1 &ARG MNTC NAME MDTC 1 ADD1 1 2 83 8/2/2024
  • 83. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 INDEX ARGUME NT 1 &ARG MNTC NAME MDTC 1 ADD1 1 2 84 8/2/2024
  • 84. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG MNTC NAME MDTC 1 ADD1 1 2 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 85 8/2/2024
  • 85. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 86 8/2/2024
  • 86. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1,&ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 87 8/2/2024
  • 87. MACRO ADD1 &ARG L 1,&ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0, 1 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 88 8/2/2024
  • 88. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0, 1 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 89 8/2/2024
  • 89. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0, 1 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 90 8/2/2024
  • 90. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0, 1 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 91 8/2/2024
  • 91. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 92 8/2/2024
  • 92. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0 🡪 SP -1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNT C NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 3 4 5 6 7 8 9 10 11 12 93 8/2/2024
  • 93. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0 🡪 SP -1, 1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 3 4 5 6 7 8 9 10 11 12 94 8/2/2024
  • 94. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0 🡪 SP -1, 1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 6 3 4 5 6 7 8 9 10 11 12 95 8/2/2024
  • 95. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0,4 🡪 SP -1,1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 6 3 Blk 4 D1 5 D2 6 D3 7 8 9 10 11 12 96 8/2/2024
  • 96. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1,&ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0,4 🡪 SP -1, 1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 8 9 10 11 12 97 8/2/2024
  • 97. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0, 4 🡪 SP -1, 1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 8 9 10 11 12 ADD1 D1 98 8/2/2024
  • 98. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0, 4 🡪 SP -1, 1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 9 10 11 12 99 8/2/2024
  • 99. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0, 4 🡪 SP -1, 1, 7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 9 10 11 12 100 8/2/2024
  • 100. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4 🡪 SP -1,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 1 9 10 11 12 101 8/2/2024
  • 101. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2 🡪 SP -1,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 1 9 Blk 10 D1 11 12 102 8/2/2024
  • 102. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2 🡪 SP -1,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 2 9 Blk 10 D1 11 12 L 1,D1 103 8/2/2024
  • 103. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2 🡪 SP -1,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 3 9 Blk 10 D1 11 12 L 1,D1 A 1,=F’1’ 104 8/2/2024
  • 104. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2 🡪 SP -1,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 4 9 Blk 10 D1 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 105 8/2/2024
  • 105. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4 🡪 SP -1,1,7,1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 5 9 Blk 10 D1 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 106 8/2/2024
  • 106. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4 🡪 SP -1,1,7,1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 8 3 Blk 4 D1 5 D2 6 D3 7 1 8 5 9 Blk 10 D1 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 ADD1 D2 107 8/2/2024
  • 107. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2 🡪 SP -1,1,7,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 8 3 Blk 4 D1 5 D2 6 D3 7 1 8 1 9 Blk 10 D2 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 ADD1 D2 108 8/2/2024
  • 108. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2 🡪 SP -1,1,7,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 8 3 Blk 4 D1 5 D2 6 D3 7 1 8 2 9 Blk 10 D2 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 109 8/2/2024
  • 109. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2 🡪 SP -1,1,7,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 8 3 Blk 4 D1 5 D2 6 D3 7 1 8 3 9 Blk 10 D2 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ 110 8/2/2024
  • 110. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0,4,2,4,2 🡪 SP -1,1,7,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 8 3 Blk 4 D1 5 D2 6 D3 7 1 8 4 9 Blk 10 D2 11 12 L 1, D1 A 1, =F’1’ ST 1, D1 L 1, D2 A 1, =F’1’ ST 1, D2 111 8/2/2024
  • 111. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2,4, 🡪 SP -1,1,7,1,7,1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 8 3 Blk 4 D1 5 D2 6 D3 7 1 8 5 9 Blk 10 D2 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ ST 1,D2 112 8/2/2024
  • 112. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2,4 🡪 SP -1,1,7,1,7,1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 9 3 Blk 4 D1 5 D2 6 D3 7 1 8 5 9 Blk 10 D2 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ ST 1,D2 ADD1 D3 113 8/2/2024
  • 113. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D3 : : END MDLC 0 🡪 N 0,4,2,4,2,4,2 🡪 SP -1,1,7,1,7,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 8 3 Blk 4 D1 5 D2 6 D3 7 1 8 1 9 Blk 10 D3 11 12 L 1, D1 A 1, =F’1’ ST 1, D1 L 1, D2 A 1, =F’1’ ST 1,D2 ADD1 D3 114 8/2/2024
  • 114. MACRO ADD1 &ARG L 1, &ARG A 1, =F’1’ ST 1, &ARG MEND MACRO ADDS &A1, &A2, &A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1, D2, D31 : : END MDLC 0 🡪 N 0,4,2,4,2,4,2 🡪 SP -1,1,7,1,7,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1, #1 3 A 1, =F’1’ 4 ST 1, #1 5 MEND 6 ADDS &A1, &A2, &A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 2 9 Blk 10 D3 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ ST 1,D2 L 1,D3 115 8/2/2024
  • 115. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2,4,2 🡪 SP -1,1,7,1,7,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 3 9 Blk 10 D3 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ ST 1,D2 L 1,D3 A 1,=F’1’ 116 8/2/2024
  • 116. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2,4,2 🡪 SP -1,1,7,1,7,1,7 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 4 9 Blk 10 D3 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ ST 1,D2 L 1,D3 A 1,=F’1’ ST 1,D3 117 8/2/2024
  • 117. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2,4,2,4 🡪 SP -1,1,7,1,7,1,7,1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 7 3 Blk 4 D1 5 D2 6 D3 7 1 8 5 9 Blk 10 D3 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ ST 1,D2 L 1,D3 A 1,=F’1’ ST 1,D3 118 8/2/2024
  • 118. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2,4,2,4,0 🡪 SP -1,1,7,1,7,1,7,1,-1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 10 3 Blk 4 D1 5 D2 6 D3 7 1 8 5 9 Blk 10 D3 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ ST 1,D2 L 1,D2 A 1,=F’1’ ST 1,D2 119 8/2/2024
  • 119. MACRO ADD1 &ARG L 1,&ARG A 1,=F’1’ ST 1,&ARG MEND MACRO ADDS &A1,&A2,&A3 ADD1 &A1 ADD1 &A2 ADD1 &A3 MEND ADDS D1,D2,D3 : : END MDLC 0 🡪 N 0,4,2,4,2,4,2,4,0 🡪 SP -1,1,7,1,7,1,7,1,-1 🡪 INDEX ARGUME NT 1 &ARG 2 &A1 3 &A2 4 &A3 MNTC NAME MDTC 1 ADD1 1 2 ADDS 6 3 MNT C DEFINITION 1 ADD1 &ARG 2 L 1,#1 3 A 1,=F’1’ 4 ST 1,#1 5 MEND 6 ADDS &A1,&A2,&A3 7 ADD1 #2 8 ADD1 #3 9 ADD1 #4 10 MEND 11 1 -1 2 10 3 Blk 4 D1 5 D2 6 D3 7 1 8 5 9 Blk 10 D3 11 12 L 1,D1 A 1,=F’1’ ST 1,D1 L 1,D2 A 1,=F’1’ ST 1,D2 L 1,D2 A 1,=F’1’ ST 1,D2 END 120 8/2/2024
  • 120. Single Pass Macro Processor 121 8/2/2024 (Macro Definition Within Macro)
  • 121. Example: --------- --------- MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0, 4 BAL 1, *+8 DC A(&Y) L 15, =V(&SUB) BALR 14, 15 MEND MEND ------ DEFINE COS COS AR Macro call Outer macro definition inner macro definition 122 8/2/2024
  • 122. MDLC=0? A No One Pass Macro Processor MDTC 1 🡨 MNTC 1 🡨 MDI “OFF” 🡨 MDLC 0 🡨 READ* Search MNT for match with operation code Macro name found? MDI “ON” 🡨 MDTP MDT Index from 🡨 MNT entry Set up macro call ALA MACRO name found? READ* Enter macro name and current value of MDTC in MNT MNTC MNTC+1 🡨 Prepare macro definition ALA Enter macro name card into MDT MDTC MDTC+1 🡨 MDLC MDLC+1 🡨 READ* Substitute Index Notation for Arguments in definition Enter line into MDT MDTC MDTC+1 🡨 MACRO pseudo-op? MEND pseudo-op? MDLC 🡨 MDLC+1 MDLC 🡨 MDLC - 1 Write into expanded source card END pseudo- op? Supply expanded source file to assembler processing A A Yes No Yes No No No No Yes Yes Yes Yes 8/2/2024 123
  • 123. READ Subroutine MDI=“OFF” ? Read next source card from i/p file Return to Main Processing Increment MDT pointer to next entry MDTO +MDTP+1 🡨 Get Next card from MDT Substitute argument from macro call MEND pseudo op? AIF or AGO Process AIF or AGO, Set new value to MDTP MDLC= 0? MDI “OFF” 🡨 Yes Yes Yes Yes No No No No 124 8/2/2024
  • 124. Source Code MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=1 MNTC=1 MDI=“OFF” MDLC=0 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- -------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- ----------------------------------------------- 8/2/2024 125
  • 125. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=1 MNTC=1 MDI=“OFF” MDLC=0 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- -------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- ----------------------------------------------- Reading Next source card due to Macro keyword 8/2/2024 126
  • 126. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=2 MNTC=2 MDI=“OFF” MDLC=1 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 127
  • 127. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=3 MNTC=2 MDI=“OFF” MDLC=2 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 128
  • 128. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=4 MNTC=2 MDI=“OFF” MDLC=2 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 129
  • 129. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=5 MNTC=2 MDI=“OFF” MDLC=2 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 130
  • 130. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=6 MNTC=2 MDI=“OFF” MDLC=2 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 131
  • 131. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=7 MNTC=2 MDI=“OFF” MDLC=2 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 132
  • 132. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=8 MNTC=2 MDI=“OFF” MDLC=2 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 133
  • 133. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=9 MNTC=2 MDI=“OFF” MDLC=2 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 134
  • 134. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=10 MNTC=2 MDI=“OFF” MDLC=1 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15, =V(#0) 8 BALR 14,15 9 MEND 10 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT 8/2/2024 135
  • 135. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=11 MNTC=2 MDI=“OFF” MDLC=0 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card after entering line into MDT & MDLC=0 8/2/2024 136
  • 136. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=11 MNTC=2 MDI=“OFF” MDLC=0 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card AND write to output file EXPANDED SOURCE FILE -------------------------------------------- PROG START 8/2/2024 137
  • 137. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=11 MNTC=2 MDI=“OFF” MDLC=0 MDTP= ALA -------------------------------- INDEX ARG -------------------------------- #0 &SUB --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15, =V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 Reading Next source card AND write to output file 8/2/2024 138
  • 138. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=11 MNTC=2 MDI=“ON” MDLC=0 MDTP=1 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card i.e. call to outer MACRO EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1, 1 8/2/2024 139
  • 139. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=11 MNTC=2 MDI=“ON” MDLC=0 MDTP=2 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0 &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15, =V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 ----------------------------------------------- Reading Next source card which expansion of MACRO DEFINE EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 8/2/2024 140
  • 140. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=12 MNTC=3 MDI=“ON” MDLC=1 MDTP=3 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card which expansion of MACRO DEFINE EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 8/2/2024 141
  • 141. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=13 MNTC=3 MDI=“ON” MDLC=1 MDTP=4 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card which expansion of MACRO DEFINE EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 8/2/2024 142
  • 142. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=14 MNTC=3 MDI=“ON” MDLC=1 MDTP=5 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15, =V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card which expansion of MACRO DEFINE EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 8/2/2024 143
  • 143. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=15 MNTC=3 MDI=“ON” MDLC=1 MDTP=6 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card which expansion of MACRO DEFINE EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 8/2/2024 144
  • 144. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=16 MNTC=3 MDI=“ON” MDLC=1 MDTP=7 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card which expansion of MACRO DEFINE EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 8/2/2024 145
  • 145. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=17 MNTC=3 MDI=“ON” MDLC=1 MDTP=8 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card which expansion of MACRO DEFINE EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 8/2/2024 146
  • 146. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“ON” MDLC=0 MDTP=9 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15, =V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card which expansion of MACRO DEFINE & MDLC=0 EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1
  • 147. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“OFF” MDLC=0 MDTP=10 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Expansion of Macro Define completed EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 8/2/2024 148
  • 148. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“OFF” MDLC=0 MDTP=10 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 &Y --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15, =V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 Reading Next source card AND write to output file 8/2/2024 149
  • 149. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“ON” MDLC=0 MDTP=11 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card which is call to MACRO COS EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1, 1 AR 1, 4 8/2/2024 150
  • 150. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“ON” MDLC=0 MDTP=12 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15, =V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Expansion of MACRO COS started & written to expanded source file EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 8/2/2024 151
  • 151. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“ON” MDLC=0 MDTP=13 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15, =V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Expansion of MACRO COS started & written to expanded source file EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 BAL 1,*+8 8/2/2024 152
  • 152. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“ON” MDLC=0 MDTP=14 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15, =V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Expansion of MACRO COS started & written to expanded source file EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 BAL 1,*+8 DC A(AR) 8/2/2024 153
  • 153. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“ON” MDLC=0 MDTP=15 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Expansion of MACRO COS started & written to expanded source file EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 BAL 1,*+8 DC A(AR) L 15,=V(COS) 8/2/2024 154
  • 154. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“ON” MDLC=0 MDTP=16 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Expansion of MACRO COS started & written to expanded source file EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 BAL 1,*+8 DC A(AR) L 15,=V(COS) BALR 14,15 8/2/2024 155
  • 155. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“OFF” MDLC=0 MDTP=17 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Expansion of MACRO COS completed & setting MDI to OFF EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 BAL 1,*+8 DC A(AR) L 15,=V(COS) BALR 14,15 8/2/2024 156
  • 156. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“OFF” MDLC=0 MDTP=17 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card & entering line into expanded source file EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 BAL 1,*+8 DC A(AR) L 15,=V(COS) BALR 14,15 L 1,X 8/2/2024 157
  • 157. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“OFF” MDLC=0 MDTP=17 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Reading Next source card & entering line into expanded source file EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 BAL 1,*+8 DC A(AR) L 15,=V(COS) BALR 14,15 L 1,X END 8/2/2024 158
  • 158. MACRO DEFINE &SUB MACRO &SUB &Y CNOP 0,4 BAL 1,*+8 DC A(&Y) L 15,=V(&SUB) BALR 14,15 MEND MEND PROG START SR 1,1 DEFINE COS AR 1,4 COS AR L 1,X END MDTC=18 MNTC=3 MDI=“OFF” MDLC=0 MDTP=17 ALA -------------------------------- INDEX ARG -------------------------------- #0 COS #1 AR --------------------------------- MDT --------------------------------------------- MDTC DEF --------------------------------------------- 1 DEFINE &SUB 2 MACRO 3 #0/COS &Y 4 CNOP 0,4 5 BAL 1,*+8 6 DC A(&Y) 7 L 15,=V(#0) 8 BALR 14,15 9 MEND 10 MEND 11 COS &Y 12 CNOP 0,4 13 BAL 1,*+8 14 DC A(#1) 15 L 15,=V(COS) 16 BALR 14,15 17 MEND 18 --------------------------------------------- MNT ----------------------------------------------- MNTC NAME MDTC ----------------------------------------------- 1 DEFINE 1 2 COS 11 3 ----------------------------------------------- Output Expanded source file is ready (END of processing) 🡪 EXPANDED SOURCE FILE -------------------------------------------- PROG START SR 1,1 AR 1,4 CNOP 0,4 BAL 1,*+8 DC A(AR) L 15,=V(COS) BALR 14,15 L 1,X END 8/2/2024 159
  • 159. Compiler Definition : Compiler is a program which takes one language (source program) as input and translates it into an equivalent another language (target program).  During this process of translation if some errors are encountered then compiler displays them as error messages.  The compiler takes a source program as higher level languages such as C, PASCAL, FORTRAN and converts it into low level language or a machine level language such as assembly language. Compiler SOURCE PROGRAM ( Normally a program written in a high-level programming language) TARGET PROGRAM ( Normally the equivalent program in machine code – relocatable object file) Error Messages 160 8/2/2024 Syllabus
  • 160. Let’s have a look at, what happens inside Black Box 161 8/2/2024
  • 161. 162
  • 162. Target Program Source Program Lexical Analyzer 1 Syntax Analyzer 2 Semantic Analyzer 3 Intermediate Code Generator 4 Code Optimizer 5 Code Generator 6 Symbol-table Manager Error Handler Stream of characters Parse/syntax tree Annotated tree Intermediate code Optimized Intermediate code General Model of Compiler Analysis/ Language Dependent/ M/C Independent Phases Synthesis/ Language Independe nt/ M/C Dependent Phases 163 8/2/2024
  • 163. Various phases in which compilation is done are as follows – 1. Lexical Analysis :-  The lexical analysis is also called scanning.  It the phase of compilation in which the complete source code is scanned and your source program is broken up into group of strings called token.  For example if some assignment statement in your source code is as follows, total = count + rate * 10  Then in lexical analysis phase this statement is broken up into series of tokens as :- 1) The Identifier total = (Id1) 2) The assignment sign 3)The identifier count = (Id2) 4) The Plus sign 5) The Identifier rate = (Id3) 6) The multiplication sign 7) The constant number 10  The blank characters which are used in the programming statement are eliminated during the lexical analysis phase. 164 Phases Of Compiler
  • 164. 2. Syntax Analysis : • The syntax analysis is also called parsing. • In this phase the tokens generated by the lexical analyser are grouped together to form a hierarchical structure called parse tree or syntax tree • For the expression total = count + rate*10 parse tree can be generated as 165
  • 165. 3. Semantic Analysis:-  Once the syntax is checked in the syntax analyser phase the next phase i.e. the semantic analysis determines the meaning of the source string.  For ex. the example meaning of source string means matching of parenthesis in the expression, or matching of if ...else statements or performing arithmetic operations of expressions that are type compatible, or checking the scope of operation. 166
  • 166. 4. Intermediate Code Generation:-  The intermediate code is a kind of code which is easy to generate and this code can be easily converted to target code.  Intermediate code in three address code form. This is like assembly language.  The three address code consists of instructions each of which has at the most three operands. For example, t1 : = int to float (10) t2: = id3 * t1 t3: = id2 + t2 id3 : = t3 167
  • 167. 5. Code Optimization:-  The code optimization phase attempts to improve the intermediate code.  This is necessary to have a faster executing code or less consumption of memory.  Thus by optimizing the code the overall running time of the target program can be improved  For ex. In this phase total=count + rate*10 will optimize like below after intermediate code generation:- t1=id3 * 10.0 id1 = id2 + t1 168
  • 168. 6. Code Generation:- In code genration phase the target code gets generated. The intermediate code instructions are translated into sequence of machine instructions. MOV id3, R1 MUL #10.0, R1 MOV id2, R2 ADD R2, R1 MOV R1, total 169
  • 169. The Structure of a Compiler 170 Scanner [Lexical Analyzer] Parser [Syntax Analyzer] Semantic Process [Semantic analyzer] Code Generator [Intermediate Code Generator] Code Optimizer Tokens Parse tree Abstract Syntax Tree w/ Attributes Non-optimized Intermediate Code Optimized Intermediate Code Code Generator Target machine code 8/2/2024
  • 170. Symbol Table ▪Compiler uses symbol table to keep track of scope and binding information about names. ▪Symbol table is searched every time when a name is encountered in source text. ▪Changes occur in symbol table if a new name or new info about existing name is discovered. ▪Two symbol table mechanisms are presented generally, linear list, hash tables. ▪Compiler should grow S.T. dynamically at compile time or the symbol table can be kept fixed. 171 8/2/2024
  • 171. The Symbol Table ▪When identifiers are found, they will be entered into a symbol table, which will hold all relevant information about identifiers. ▪When the symbol is first encountered by the lexer, we do not yet know the scope. ▪That is determined later by the parser. ▪This information will be used later by the semantic analyzer and the code generator. Lexical Analyzer Semantic Analyzer Code Generator Symbol Table Syntax Analyzer 172 8/2/2024
  • 172. Symbol Table Entries We will store the following information about identifiers. ▪The name (as a string). ▪The data type and value. ▪The block level. ▪Its scope (global, local, or parameter). ▪Its offset from the base pointer (for local variables and parameters only). 173 8/2/2024
  • 173. Interpreter It is a translator (language processor) which directly executes operations specified in source program on input supplied by user. Interpreter SOURCE PROGRAM Output Input 174 8/2/2024
  • 175. Interpreter vs Compiler Interpreter Compiler Translates program by one statement at a time. Scans the entire program and translates it as a whole into machine code. It takes less amount of time to analyze the source code but the overall execution time is slower. It takes large amount of time to analyze the source code but the overall execution time is comparatively faster. No intermediate object code is generated, hence are memory efficient. Generates intermediate object code which further requires linking, hence requires more memory. Continues translating the program until the first error is met, in which case it stops. Hence debugging is easy. It generates the error message only after scanning the whole program. Hence debugging is comparatively hard. Programming language like Python, Ruby use interpreters. Programming language like C, C++ use compilers. 176 8/2/2024
  • 176. Case Study- GNU m4 Macro Processor 177 8/2/2024 ▪m4 is a macro processor, it copies its input to the output, expanding macros as it goes. ▪Macros are either built-in or user-defined, and can take any number of arguments. ▪Besides just doing macro expansion, m4 has built-in functions for including named files in UNIX commands, doing integer arithmetic, manipulating text in various ways, recursion, etc. ▪m4 can be used either as a front-end to a compiler, or as a macro processor in its own right. ▪The most popular GNU Autoconf pre-requires GNU m4 for generating the ’configure’ scripts. ▪While these people will not themselves program in m4. GNU m4is mostly compatible with the System V, Release 3 version, except for some minor differences. ▪A General Purpose Macro generator (GPM) an important ancestor of m4 . m4 is mostly SVR4 compatible.
  • 177. Case Study- GNU m4 Macro Processor 178 8/2/2024 The format of the m4command is: m4 [option...] [macro-definitions...] [input-file...] m4 --def foo --debug a is equivalent to 🡪 m4 --define=foo --debug= -- ./a
  • 178. 1) John Donovan, “Systems Programming”, McGraw Hill, ISBN 978-0--07-460482-3 2) Dhamdhere D., "Systems Programming and Operating Systems", McGraw Hill, ISBN 0 - 07 - 463579 – 4 3) https://www.gnu.org/software/m4/manual/m4.html#Syntax Ebooks: ▪ https://www.elsevier.com/books/systems-programming/anthony/978-0-12-800729-7 ▪ https://www.kobo.com/us/en/ebook/linux-system-programming-1 ▪ https://www.e-booksdirectory.com/details.php?ebook=9907 MOOCs Courses Links: ▪ nptel video lecture link: https://nptel.ac.in/courses/106/105/106105214/ ▪ https://onlinecourses.nptel.ac.in/noc19_cs50/preview ▪ https://www.udemy.com/course/system-programming/ 8/2/2024 179 References