File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1010import symboltable .*;
1111import IR .*;
1212import helper .*;
13+ import linker .*;
14+ import codegen .*;
1315import java .util .List ;
1416import java .util .Hashtable ;
1517
@@ -96,6 +98,34 @@ public static void main(String[] args)
9698 }
9799 }
98100 }
101+
102+ //Create output file
103+ String fileName = args [0 ].substring (0 , args [0 ].lastIndexOf ("." )) + ".asm" ;
104+ FileWriter fw = null ;
105+ BufferedWriter bw = null ;
106+
107+ try
108+ {
109+ fw = new FileWriter (fileName );
110+ bw = new BufferedWriter (fw );
111+
112+ //Write MIPS
113+
114+ }
115+ catch (IOException e )
116+ {
117+ e .printStackTrace ();
118+ }
119+
120+ //Close output file resources
121+ if (fw != null )
122+ fw .close ();
123+ if (bw != null )
124+ bw .close ();
125+
126+ //Link runtime.asm file
127+ Linker linker = new Linker ("linker/runtime.asm" , fileName );
128+ linker .link ();
99129 }
100130 }
101131 }
Original file line number Diff line number Diff line change 1+ //Mark Klara
2+ //mak241@pitt.edu
3+ //CS 1622 - Project 3
4+ //Linker.java
5+
6+ package linker ;
7+
8+ import java .io .FileReader ;
9+ import java .io .BufferedReader ;
10+ import java .io .FileWriter ;
11+ import java .io .BufferedWriter ;
12+ import java .io .IOException ;
13+ import java .io .FileNotFoundException ;
14+
15+ public class Linker
16+ {
17+ String inFile ;
18+ String outFile ;
19+ boolean errorDetected ;
20+
21+ public Linker ()
22+ {
23+ inFile = null ;
24+ outFile = null ;
25+ errorDetected = false ;
26+ }
27+
28+ public Linker (String input , String output )
29+ {
30+ inFile = input ;
31+ outFile = output ;
32+ errorDetected = false ;
33+ }
34+
35+ public void link ()
36+ {
37+ try
38+ {
39+ if (inFile == null )
40+ {
41+ System .err .println ("Input file for the linker is invalid." );
42+ return ;
43+ }
44+
45+ if (outFile == null )
46+ {
47+ System .err .println ("Output file for the linker is invalid." );
48+ return ;
49+ }
50+
51+ FileReader fr = new FileReader (inFile );
52+ BufferedReader br = new BufferedReader (fr );
53+ FileWriter fw = new FileWriter (outFile , true );
54+ BufferedWriter bw = new BufferedWriter (fw );
55+
56+ String temp ;
57+ while ((temp = br .readLine ()) != null )
58+ {
59+ bw .write (temp , 0 , temp .length ());
60+ bw .write ("\n " , 0 , 1 );
61+ }
62+
63+ //Close resources
64+ if (fr != null )
65+ fr .close ();
66+ if (br != null )
67+ br .close ();
68+ if (bw != null )
69+ bw .close ();
70+ if (fw != null )
71+ fw .close ();
72+ }
73+ catch (IOException e )
74+ {
75+ e .printStackTrace ();
76+ }
77+ }
78+ }
You can’t perform that action at this time.
0 commit comments