예제 #1
0
        public void Generar()
        {
            this.Codigo.Append("\n");
            foreach (Instruccion instruccion in this.CodeSegment.Instrucciones)
            {
                this.Codigo.Append(instruccion.CodigoMaquina(this.CodeSegment));
                if (instruccion is Etiqueta etiqueta)
                {
                    int    direccionMemoria = Regex.Matches(this.Codigo.ToString(), Environment.NewLine).Count;
                    string direccion        = Memoria.CalcularDireccion(direccionMemoria);
                    this.CodeSegment.AgregarEtiqueta(etiqueta.Identificador, direccion);
                }
            }

            this.Codigo.Clear();
            foreach (Instruccion instruccion in this.CodeSegment.Instrucciones)
            {
                StringBuilder ins = instruccion.CodigoMaquina(this.CodeSegment);
                ins.TrimEnd().Append(";").AppendLine(instruccion.Linea);
                this.Codigo.Append(ins);
            }
            this.CodeSegment.Validar();
        }