Macro Pass2
Macro Pass2
The output of
assignment-3
(MNT, MDT and file without any macro definitions) should be input for this assignment.
import java.io.*;
import java.util.HashMap;
import java.util.Vector;
aptab.put(aptabInverse.get(initializedParams[0].substring(1,initializedParams[0].length())),initializedPar
ams[1].substring(0,initializedParams[1].length()));
i++;
}
i=mdtp-1;
while(mdt.get(i).compareToIgnoreCase("MEND")!=0){
f1.write("+ ");
for(int j=0;j<mdt.get(i).length();j++){
if(mdt.get(i).charAt(j)=='#')
f1.write(aptab.get(Integer.parseInt("" +
mdt.get(i).charAt(++j))));
else
f1.write(mdt.get(i).charAt(j));
}
f1.write("\n");
i++;
}
aptab.clear();
aptabInverse.clear();
}
else
f1.write("+ "+s+"\n");
}
b1.close();
b2.close();
b3.close();
b4.close();
f1.close();
}
}
/*
OUTPUT:
Input.txt
MACRO
ADDITION
&arg1,&arg2,&arg3
MOV ax,&arg1
ADD ax,&arg2
ADD ax,&arg3
MEND
ADDITION 34,45,44
END
ALA
Macro Name | Actual Parameters
------------|-------------------
ADDITION | 34 -> arg1, 45 -> arg2, 44 -> arg3
Output.txt
MOV ax, 34 ; Load arg1 (34) into ax
ADD ax, 45 ; Add arg2 (45) to ax
ADD ax, 44 ; Add arg3 (44) to ax