You are on page 1of 3

code:

p bl m s a m n : Wrile Java program for pass-[J of a two-pans macro­


sso1. The ulpul of assignmenL-3
J'll'l'

(MNT, MDT and fil without any macro definitions) should be input for this
;issignment.

pn�kagcmyprnjcct;

unp01t 7.1,·,1.io.';
im1-'�'1·Ljava.ul il. llashMc1p;
imr:,,1Ljava.uLil.V c:L0r;

public class Fass?. {


public static void main(String[] Args) throws IOException(
BufferedReader bl = new BufferedReader(new
FileReader("C:\\Users\\Dhruv\\Desktop\\intermediate.txt"));
BufferedReader b2 = new BufferedReader(new
FileReader("C:\\Users\\Dhruv\\Desktop\\mnt.txt"));
BufferedReader b3 = new BufferedReader(new
FileReader{"C:\\Users\\Dhruv\\Desktop\\mdt.txt")
· );
BufferedReader b4 = new BufferedReader(new
FileReader("C:\\Users\\Dhruv\\Desktop\\kpclt.txt"));
FileWriter fl = new
FileWriter("C:\\Users\\Dhruv\\Desktop\\Pass2.txt");
HashMap<Integer,String>aptab = new HashMap<Integer,String>();
HashMap<String,Integer>aptabinverse= new
HashMap<String,Integer>();
HashMap<String, �nteger>mdtpHash=new HashMap<String,Integer>();
HashMap<String,Integer>kpdtpHash=new HashMap<String,Integer>();
HashMap<String,Integer>kpHash=new HashMap<String,Integer>();
HashMap<Strinq,Inteqer>macroNameHash =new
HashMap<String,Integer>();
·vector<String>mdt=new Vector<String>();
Vector<String>kpdt=new Vector<String>();
String s,sl;
inti,pp,kp,kpdtp,mdtp,paramNo;
while((s=b3.readLine()) !=null)
mdt.addElement(s);
while((s=b4.readLine()) !=null)
kpdt.addElement(s);
while((s =b2.r'eadLine()) != null) (
String word[J =s.split "\t");
sl=word[O]+word
macroNameHa· .put(word[0],1);
kpHash. .(sl,Integer.parseJnt(word[2)));
mdt ash.put(sl,Integer.parseint(word[3]));
dtpHash.put(s1,Intege.r.parseint(word[4]));

while((s =bl.readLine()) !=null) (


String blSplit[],,s.spli.t.("\\s");
if(macroNameHash.containsKey(b1Split[O]))
pp = bl SpJ.it[l) .spli.t(",") .length-
blSplit[l] .spJJ.t(" = ") .J.enqth+l;
kp= kpHash.get (blSpli t f O l ·I lnte�Jer. toS tring (pp
));
mcitp =mdtpHash.get(blSplit[O]+Integer.toStr g
in (pp));
kpdtp•kpdtpHash.get(blSplit[O] •Inteqer.toString(pp));
Sti:ing actualParams I] =-blSplit 11 I.split (", ");
paramt�o-" l;
for (int j•O; j<pp;j-1 +) {
aptab.put(paramNo, actualParams[paramNo-1]);
aptablnverse.put(actualParams[paramNo-
1 I, paramNo);
paramNo++;
}
i=kpdtp-1;
for(int j=O;j<l:p;j++) (
String temp [] =kpdt. get (i).split I"\t");
aptab.put(paramNo,temp(l));
aptabinverse.put(temp(OJ,paramNo);
it+;
paramNo+-1;

i, pp+l;
0

while(i<=actualParams.length) I


String initializedParams()=actualParams(i-
1).split("=");

aptab.put(aptabinverse.get(initializedParams[O) .substring(l,initializ
edParams(OJ .length())),initializedParams[l) .substring(O,initializedParams[l
I.length I J ) );
i++;

i=mdtp-1;
while(mdt.get(i).compareToignoreCase("MEND") !=0) (
fl.write("+ ");
for(int j=O;j<mdt.get(i) .length();j++) I
if(mdt.get(i).charAt(j)=='tt'l

fl. write (aptab. get( Inte:ger .parse Int ("" + rndt. get Ii) . charAt(++j J)));
else
fl.write (mdt.get (i). charAt (j));

fl.write("\n");
i++;


aptab.clear();
aptabinverse.clear();

else

)
bl. close();
b2.close
b3. cl e I);
b4 ose ();
OUTPUT:
Intermed at --
i e

Ml 10,20,&b=C REG
G & EG
=
M 2 1 0 ,02 0 ,0&u &ARE ,&v = B R

-
K p d
t

a A R EG
b
u CREG
v D REG

pass2
-

+ MOVE ARE G, 1 0


+ ADD AREG,= ' l'
+ MOVER AR EG,2 0
+ ADD AREG,= ' S'
+ MOVER &AREG,10
0
+ MOVER &BREG,
200
+ ADD &AREG,= '15'
+ ADD &B R E ,G='1 0'

MN T­
Ml 2 1
2 1
M2 2 2 6 3

MDT -
MOVE #3,# 1
ADD #3,= '1'
MOV ER #3,11 2
ADD # 3,= 'S'

MEND
MOVER 113,tll
MOVER #4,#
2
ADD# 3,=' 1 5'
ADD #4,='1 0 '
ME DN

You might also like