Pass 1
Pass 1
java
import java.io.*;
import java.util.*;
class Pass1 {
String[] IS = {"stop", "add", "sub", "mult", "mover", "movem", "comp", "be", "div", "read"};
int temp1 = 0;
int f =0;
String line;
try {
if (f == 1) {
ltorg = false;
bw.write("\n" + String.valueOf(loc));
f = 0;
loc++;
} else {
bw.write("\n" + String.valueOf(loc));
ltorg = false;
loc++;
pos = -1;
if (start) {
loc = Integer.parseInt(tokens[k]);
start = false;
switch (tokens[k]) {
case "start":
start = true;
pos = 1;
break;
case "end":
end = true;
pos = 2;
if (literal_table[temp].addr == 0) {
literal_table[temp].addr = loc - 1;
if (pooltab_cnt == 0) {
} else {
pooltab_cnt++;
break;
case "origin":
pos = 3;
k++;
loc = symb_table[pos].addr;
break;
case "ltorg":
ltorg = true;
pos = 5;
if (literal_table[temp].addr == 0) {
literal_table[temp].addr = loc - 1;
}
}
if (pooltab_cnt == 0) {
} else {
pooltab_cnt++;
break;
case "equ":
pos = 4;
symb_table[posi].addr = symb_table[pos].addr;
break;
default:
if (pos == -1) {
if (pos != -1) {
} else {
if (pos != -1) {
if (pos == 0) f = 1;
fill_addr = true;
} else if (tokens[k].matches("[a-zA-Z]+:")) {
if (pos == -1) {
pos = total_symb;
} else {
if (pos != -1) {
} else {
if (tokens[k].matches("='\\d+'")) {
temp1 = Integer.parseInt(tokens[k]);
} else {
symb_table[pos].addr = loc - 1;
fill_addr = false;
} else {
break;
System.out.println("\nSYMBOL\tADDRESS");
System.out.println("\nPOOL\tTOTAL LITERALS");
System.out.println("\nIndex\tLITERAL\tADDRESS");
System.out.println("\nMNEMONIC\tOPCODE");
br.close();
bw.close();
} catch (Exception e) {
e.printStackTrace();
try {
System.out.println(line);
br.close();
} catch (IOException e) {
e.printStackTrace();
if (token.equalsIgnoreCase(list[i]))
return i;
return -1;
if (token.equalsIgnoreCase(list[i].name))
return i;
return -1;
Obj.java
String name;
int addr;
this.name=nm;
this.addr=address;
Pooltable.java
int first,total_literals;
this.first=f;
this.total_literals=l;
sample.txt
start 100
movr ax 05
mover bx 10
up: add ax bx
movem a ='5'
origin up
ltorg
movem b ='7'
ds a 02
dc b 10
end
Output.txt
empty
output:--
102 (AD, 5)
(DL, 2) (C, 5)
107 (AD, 2)
(DL, 2) (C, 7)
108