Pass 2
Pass 2
Pass 2
ASSIGNMENT NO.: 2
Problem Statement:
Implement Pass-II of two pass assembler for pseudo-machine in Java/C++ using object
oriented features. The output of assignment-1 (intermediate file and symbol table) should be
input for this assignment.
Objectives:
1. To study the design and implementation of 2nd pass of two pass assembler.
2. To study the data structure used in Pass-2 of assembler implementation.
Theory:
1. Explain the design of Pass- II of assembler with the help of flowchart and example.
Algorithms (procedure):
Output:
Base Table (BT)
Object Code
LC OPCODE OPERAND
100 5A 1,40(0,15)
104 1B 1,20(0,15)
108 50 1,44(0,15)
112 18 1,2
124 5A 2,36(0,15)
128 1B 2,52(0,15)
132 1B 2,56(0,15)
Test Cases:
Hardware Requirement:
4GB RAM, 500GB HDD
Conclusion:
The intermediate data structures generated in Pass-I of assembler are given as input to the Pass-
II of assembler, processed by applying Pass-II algorithm of assembler and machine code is
generated
CODE:
/*
Problem Statement: Implement Pass-II of two pass assembler for pseudo-machine in Java
using object oriented
features. The output of assignment-1 (intermediate file and symbol table) should be
input for this assignment.
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
f1.write(symSymbol.get(Integer.parseInt(s.substring(10+offset,s.length()-1)))+"\n");
else
f1.write(litAddr.get(Integer.parseInt(s.substring(10+offset,s.length()-1)))+"\n");
}
else if(s.substring(1,6).compareToIgnoreCase("DL,01")==0){
String s1=s.substring(10,s.length()-1),s2="";
for(int i=0;i<3-s1.length();i++)
s2+="0";
s2+=s1;
f1.write("+ 00 0 "+s2+"\n");
}
else{
f1.write("\n");
}
}
f1.close();
b1.close();
b2.close();
b3.close();
}
}
OUTPUT:
/*
intermediate code -
(AD,01)(C,200)
(IS,04)(1)(L,1)
(IS,05)(1)(S,1)
(IS,04)(1)(S,1)
(IS,04)(3)(S,3)
(IS,01)(3)(L,2)
(IS,07)(6)(S,4)
(DL,01)(C,5)
(DL,01)(C,1)
(IS,02)(1)(L,3)
(IS,07)(1)(S,5)
(IS,00)
(AD,03)(S,2)+2
(IS,03)(3)(S,3)
(AD,03)(S,6)+1
(DL,02)(C,1)
(DL,02)(C,1)
(AD,02)
(DL,01)(C,1)
Symbol Table --
A 211 1
LOOP 202 1
B 212 1
NEXT 208 1
BACK 202 1
LAST 210 1
literal table --
5 206
1 207
1 213
machine code --
+ 04 1 206
+ 05 1 211
+ 04 1 211
+ 04 3 212
+ 01 3 207
+ 07 6 208
+ 00 0 005
+ 00 0 001
+ 02 1 213
+ 07 1 202
+ 00 0 000
+ 03 3 212
*/