Skip to content

Commit a1a63bb

Browse files
committed
Added linker to link "runtime.asm" to file output
1 parent 5957943 commit a1a63bb

2 files changed

Lines changed: 108 additions & 0 deletions

File tree

‎MiniJavaCompiler.java‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import symboltable.*;
1111
import IR.*;
1212
import helper.*;
13+
import linker.*;
14+
import codegen.*;
1315
import java.util.List;
1416
import 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
}

‎linker/Linker.java‎

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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+
}

0 commit comments

Comments
 (0)