-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSaida.cs
More file actions
179 lines (173 loc) · 11.7 KB
/
Saida.cs
File metadata and controls
179 lines (173 loc) · 11.7 KB
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
abstract class Saida
{
FileStream _arq;
StreamWriter _gravador;
public Saida(string endereco)
{
_arq = new FileStream(endereco, FileMode.Create);
_gravador = new StreamWriter(_arq);
}
public void Emite(string comando)
{
_gravador.Write(comando);
}
public void EmiteL(string comando)
{
_gravador.WriteLine(comando);
}
public void Fecha()
{
_gravador.Flush();
_gravador.Close();
}
// ==========================================================================
// Rotinas que devem ser implementadas pelo arquivo especifico do processador
// ==========================================================================
//
// Os nomes são o mais explicativos possíveis, mas em caso de dúvida busque nos arquivos já implantados
public abstract void EmiteComentario(string comentario);
public abstract void EmiteModulo(string nome, string arquivo);
public abstract void EmiteModuloFim(string nome);
public abstract void EmiteRotina(string nome);
public abstract void EmiteRotinaFim(string nome);
public abstract void EmiteEntraNaRotina();
public abstract void EmiteSaiDaRotina();
public abstract string GeraRotulo();
public abstract void EmitePulaPara(string rotulo);
public abstract void EmiteRotulo(string rotulo);
public abstract void EmiteGravaNumeroNaVariavelLocal(int posicao, decimal valor);
public abstract void EmiteGravaNumeroEmAcumulador(decimal valor);
public abstract void EmiteCopiaAcumuladorParaVariavelLocal(int posicao);
public abstract int TamanhoPonteiro{get;}
public abstract int CalculaTamanho(TipoVariavel tipo);
public abstract int CalculaTamanhoReal(TipoVariavel tipo);
public abstract void EmiteSubtraiDoPtrPilha(int qtd);
public abstract void EmiteAdicionaNoPtrPilha(int qtd);
public abstract void EmiteEmpilhaAcumulador();
public abstract void EmiteDesempilhaAcumulador();
public abstract void EmiteChamaRotina(string modulo, string rotina);
public abstract void EmiteGerarEspaco(int bytes);
public abstract void EmiteCopiaAcumuladorParaAuxiliar();
public abstract void EmiteCopiaAcumuladorParaContador();
public abstract void EmiteAdicionaAuxNoAcumulador();
public abstract void EmiteSubtraiAuxNoAcumulador();
public abstract void EmiteDivideSinalAuxNoAcumulador();
public abstract void EmiteDivideSemSinalAuxNoAcumulador();
public abstract void EmiteMultiplicaSinalAuxNoAcumulador();
public abstract void EmiteMultiplicaSemSinalAuxNoAcumulador();
public abstract void EmiteModSinalAuxNoAcumulador();
public abstract void EmiteModSemSinalAuxNoAcumulador();
public abstract void EmiteShlContadorNoAcumulador(bool word);
public abstract void EmiteShrContadorNoAcumulador(bool word);
public abstract void EmiteRorContadorNoAcumulador(bool word);
public abstract void EmiteRolContadorNoAcumulador(bool word);
public abstract void EmiteComparaAcumuladorComZero();
public abstract void EmitePulaSeIgual(string rotulo);
public abstract void EmitePulaSeDiferente(string rotulo);
public abstract void EmiteConverteAcumuladorEmByte();
public abstract void EmiteDefinePonteiroRemotoParaRotuloDoCodigo(string rotulo);
public abstract void EmiteBinario(byte[] dados);
public abstract void EmiteEmpilhaPonteiroRemoto();
public abstract void EmiteGravaNumeroNoSegDaVariavelLocal(int posicao, decimal valor);
public abstract void EmiteGravaNumeroNoPonteiroRemoto(decimal valor);
public abstract void EmiteGravaNumeroNoSegDoPonteiroRemoto(decimal valor);
public abstract void EmiteCopiaPonteiroRemotoParaVariavelLocal(int posicao);
public abstract void EmiteCopiaAcumuladorParaSegDaVariavelLocal(int posicao);
public abstract void EmiteCopiaAcumuladorParaByteArrayDaVariavelLocal(int posicao, int desvio);
public abstract void EmiteCopiaAcumuladorParaWordArrayDaVariavelLocal(int posicao, int desvio);
public abstract void EmiteGravaNumeroNoByteArrayDaVariavelLocal(int posicao, decimal valor, int desvio);
public abstract void EmiteGravaNumeroNoWordArrayDaVariavelLocal(int posicao, decimal valor, int desvio);
public abstract void EmiteCopiaVariavelLocalParaAcumulador(int posicao);
public abstract void EmiteCopiaSegDaVariavelLocalParaAcumulador(int posicao);
public abstract void EmiteCopiaByteArrayDaVariavelLocalParaAcumulador(int posicao, int desvio);
public abstract void EmiteCopiaWordArrayDaVariavelLocalParaAcumulador(int posicao, int desvio);
public abstract void EmiteDesempilhaAuxiliar();
public abstract void EmiteIncrementaVariavelLocal(int posicao);
public abstract void EmiteIncrementaSegDaVariavelLocal(int posicao);
public abstract void EmiteDecrementaVariavelLocal(int posicao);
public abstract void EmiteDecrementaSegDaVariavelLocal(int posicao);
public abstract void EmiteIncrementaByteArrayNaVariavelLocal(int posicao, int desvio);
public abstract void EmiteDecrementaByteArrayNaVariavelLocal(int posicao, int desvio);
public abstract void EmiteIncrementaWordArrayNaVariavelLocal(int posicao, int desvio);
public abstract void EmiteDecrementaWordArrayNaVariavelLocal(int posicao, int desvio);
public abstract void EmitePulaSeMaiorQue(string rotulo, bool sem_sinal);
public abstract void EmitePulaSeMaiorOuIgual(string rotulo, bool sem_sinal);
public abstract void EmitePulaSeMenorQue(string rotulo, bool sem_sinal);
public abstract void EmitePulaSeMenorOuIgual(string rotulo, bool sem_sinal);
public abstract void EmiteComparaAcumuladorComAuxiliar();
public abstract void EmiteGravaRotuloEmAcumulador(string rotulo);
public abstract void EmiteCopiaSegCodigoParaAcumulador();
public abstract void EmiteAplicaAndEntreAcumuladorEAuxiliar();
public abstract void EmiteAplicaOrEntreAcumuladorEAuxiliar();
public abstract void EmiteAplicaXorEntreAcumuladorEAuxiliar();
public abstract void EmiteIncrementaSegDaVariavelGlobal(string rotulo);
public abstract void EmiteDecrementaSegDaVariavelGlobal(string rotulo);
public abstract void EmiteIncrementaVariavelGlobal(string rotulo);
public abstract void EmiteDecrementaVariavelGlobal(string rotulo);
public abstract void EmiteIncrementaByteArrayNaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteDecrementaByteArrayNaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteIncrementaWordArrayNaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteDecrementaWordArrayNaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteGravaNumeroNaVariavelGlobal(string rotulo, decimal valor);
public abstract void EmiteCopiaAcumuladorParaSegDaVariavelGlobal(string rotulo);
public abstract void EmiteCopiaAcumuladorParaVariavelGlobal(string rotulo);
public abstract void EmiteGravaNumeroNoSegDaVariavelGlobal(string rotulo, decimal valor);
public abstract void EmiteGravaNumeroNoByteArrayDaVariavelGlobal(string rotulo, decimal valor, int desvio);
public abstract void EmiteGravaNumeroNoWordArrayDaVariavelGlobal(string rotulo, decimal valor, int desvio);
public abstract void EmiteCopiaAcumuladorParaByteArrayDaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteCopiaAcumuladorParaWordArrayDaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteCopiaVariavelGlobalParaAcumulador(string rotulo);
public abstract void EmiteCopiaByteArrayDaVariavelGlobalParaAcumulador(string rotulo, int desvio);
public abstract void EmiteCopiaSegDaVariavelGlobalParaAcumulador(string rotulo);
public abstract void EmiteCopiaWordArrayDaVariavelGlobalParaAcumulador(string rotulo, int desvio);
public abstract void EmiteCopiaWordArrayDaVariavelLocalParaPonteiroRemoto(int posicao);
public abstract void EmiteCopiaByteArrayDaVariavelLocalParaPonteiroRemoto(int posicao);
public abstract void EmiteCopiaWordArrayDaVariavelGlobalParaPonteiroRemoto(string rotulo);
public abstract void EmiteCopiaByteArrayDaVariavelGlobalComoPonteiroRemoto(string rotulo);
public abstract void EmiteCopiaWordArrayDaVariavelLocalParaPonteiroRemoto(int posicao, int desvio);
public abstract void EmiteCopiaByteArrayDaVariavelLocalParaPonteiroRemoto(int posicao, int desvio);
public abstract void EmiteCopiaWordArrayDaVariavelGlobalParaPonteiroRemoto(string rotulo, int desvio);
public abstract void EmiteCopiaByteArrayDaVariavelGlobalComoPonteiroRemoto(string rotulo, int desvio);
public abstract void EmiteCopiaPonteiroRemotoParaVariavelGlobal(string rotulo);
public abstract void EmiteCopiaPonteiroPilhaParaPonteiroRemoto();
public abstract void MarcaInicioDeRepeticao();
public abstract void MarcaFimDeRepeticao();
public abstract void EmiteChamaRotinaEmVariavelLocal(int posicao);
public abstract void EmiteChamaRotinaEmVariavelGlobal(string rotulo);
public abstract void EmiteChamaRotinaEmPonteiroNaVariavelLocal(int posicao, int desvio);
public abstract void EmiteChamaRotinaEmPonteiroNaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteCopiaPonteiroRemotoParaWordArrayNaVariavelLocal(int posicao, int desvio);
public abstract void EmiteCopiaPonteiroRemotoParaWordArrayNaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteCopiaPonteiroRemotoParaByteArrayNaVariavelLocal(int posicao, int desvio);
public abstract void EmiteCopiaPonteiroRemotoParaByteArrayNaVariavelGlobal(string rotulo, int desvio);
public abstract void EmiteItemRealocacao(Realocacao realoc);
public abstract void EmiteEmpilhaVariavelGlobal(string rotulo);
public abstract void EmiteDesempilhaVariavelGlobal(string rotulo);
public abstract void EmiteCopiaPonteiroBaseParaAcumulador();
public abstract void EmiteCopiaPonteiroPilhaParaAcumulador();
public abstract void EmiteCopiaAcumuladorParaPonteiroBase();
public abstract void EmiteCopiaAcumuladorParaPonteiroPilha();
public abstract void EmiteGravaNumeroEmAuxiliar(decimal numero);
public abstract void EmitePulaParaLocalEmVariavelGlobal(string rotulo);
public abstract void EmiteCopiaAuxiliarParaAcumulador();
public abstract void EmiteCopiaPonteiroPilhaParaAuxiliar();
public abstract void EmiteCopiaPonteiroLocalEmVariavelLocalParaPonteiroRemoto(int posicao);
public abstract void EmiteCopiaVariavelGlobalParaPonteiroBase(string rotulo);
public abstract void EmiteCopiaVariavelGlobalParaPonteiroPilha(string rotulo);
public abstract void EmiteInverteAcumulador();
public abstract void EmiteInterrupcao(string nome);
public abstract void EmiteInterrupcaoFim(string nome, bool simples = false);
public abstract void EmiteMarcaInvalidaOtimizacoes();
public abstract void EmiteItemImportaModulo(Modulo mod);
public abstract void EmiteItemImportaRotina(Rotina rot);
public abstract void EmiteItemExportaModulo(Modulo mod);
public abstract void EmiteItemExportaRotina(Rotina rot);
public abstract void EmiteCopiaAcumuladorParaPilhaDiretoUsandoVariavelGlobal(string nome, int desvio);
public abstract void EmiteCopiaPilhaDiretoUsandoVariavelGlobalParaAcumulador(string nome, int desvio);
public abstract void EmitePulaParaPtrNaPilhaDiretoUsandoVariavelGlobal(string nome, int desvio);
public abstract void EmiteCopiaPonteiroRemotoParaPilhaDiretoUsandoVariavelGlobal(string nome, int desvio);
public abstract void EmiteCopiaPilhaDiretoUsandoVariavelGlobalParaPonteiroRemoto(string nome, int desvio);
public abstract void EmiteGravaRotuloPtrParaPilhaDiretoUsandoVariavelGlobal(string nome, int desvio, string rotulo);
public abstract void EmiteCopiaPilhaDiretoUsandoVariavelGlobalParaPonteiroBase(string nome, int desvio);
public abstract void EmiteCopiaPilhaDiretoUsandoVariavelGlobalParaPonteiroPilha(string nome, int desvio);
}