-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGeracaoMemoria.java
117 lines (98 loc) · 2.35 KB
/
GeracaoMemoria.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
public class GeracaoMemoria{
public static List<String> linhasCF;
public BufferedWriter arquivo;
public static int contador = 0;
public static int contTemp = 0;
public GeracaoMemoria(String arquivoASM) throws Exception{
linhasCF = new ArrayList<>();
String x = arquivoASM.substring(0,arquivoASM.length()-2);
arquivo = new BufferedWriter(new FileWriter("./"+x+".asm"));
}
public void zerarTemp(){
contTemp = 0;
}
public int alocarTemp(){
int tmp = contador;
//contador += 4000;
contador += 16384;
return tmp;
}
public int alocarTipoLogico(){
int tmp = contador;
contador++;
return tmp;
}
public int alocarTipoChar(){
int tmp = contador;
contador++;
return tmp;
}
public int alocarTipoChar(int tam){
int tmp = contador;
contador += tam;
return tmp;
}
public int alocarTipoInteiro(){
int tmp = contador;
contador += 2;
return tmp;
}
public int alocarTipoInteiro(int tam){
int tmp = contador;
contador += (2*tam);
return tmp;
}
public int alocarTipoString(){
int tmp = contador;
contador += 256;
return tmp;
}
public int alocarTipoString(int tam){
int tmp = contador;
contador += tam;
return tmp;
}
public int novoTemp(){
return contTemp;
}
public int alocarTempTipoLogico(){
int tmp = contTemp;
contTemp++;
return tmp;
}
public int alocarTempTipoChar(){
int tmp = contTemp;
contTemp++;
return tmp;
}
public int alocarTempTipoInteiro(){
int tmp = contTemp;
contTemp += 2;
return tmp;
}
public int alocarTempTipoString(){
int tmp = contTemp;
contTemp += 256;
return tmp;
}
public int alocarTempTipoString(int tam){
int tmp = contTemp;
contTemp += tam;
return tmp;
}
public void criarArquivoASM() throws IOException{
for(String linha : linhasCF){
arquivo.write(linha);
arquivo.newLine();
}
arquivo.close();
}
}