Continuamos otra vez con el proyecto del ensamblador después de jugar un poco con el Jmagick...
Pues bien, para la quinta fase requerimos saber las direcciones de memoria de las variables, así como de las instrucciones de código, calcular desplazamientos, etc.
Nos valdremos de la clase TablaSimbolos y de su método getPropiedad para obtener estos datos.
Para calcular los desplazamientos requerimos saber el tamaño de variable, es decir DB o DW y los elementos declarados, para las cadenas se multiplica la longitud de la cadena [sin contar las comillas dobles o simples que pudiera tener].
Agregado a esto, tenemos la nueva restricción de validar las etiquetas, que deberán ser definidas antes de ser usadas, esto con el objetivo de agregarlas a la tabla de símbolos.
Así pues, la tabla contendrá un nuevo tipo de dato que será "etiqueta".
Quedando los tipos como "constante" "variable" y "etiqueta".
Además, aumentamos que se puede especificar una cantidad para dup en hexadecimal, binario o decimal.
Todas estas modificaciones aumentan la complejidad del analizador de instrucciones, ya que ahora no sólo necesitaremos saber si la instrucción es correcta, sino qué tipo de instrucción se analizó y varios datos que son de interés.
Crearemos una nueva clase llamada Instruccion, que contendrá métodos para:
Saber si es válida o inválida.
actualizar estado en caso de requerir buscar una variable o etiqueta.
Obtener el tamaño de sus elementos.
Obtener los elementos.
Obtener el elemento en espera.
Esto no es más que un modelo para las instrucciones y sus elementos son seteados por el controlador cuando no han podido ser seteados en el constructor, como es el caso de tener que buscar una variable o una etiqueta en la tabla de símbolos.
Sólo resta realizar la sexta y última fase que consiste en codificar las instrucciones...
No hay comentarios:
Publicar un comentario