¿Cómo se diseña un ensamblador de dos pasos? [cerrado]

0

¿Cuál es el algoritmo para el primer paso y el segundo paso de un ensamblador?

He estado buscando una descripción o un tutorial pero no he encontrado ninguno. Si hay tutoriales que explican estos algoritmos, ¡enlázalos en las respuestas!

    
pregunta steve

1 respuesta

3

Los diferentes ensambladores hacen las cosas de manera diferente, por lo que no hay una sola respuesta. Algunos ensambladores solo son de una sola pasada, por ejemplo.

Los ensambladores que son de dos pasos generalmente hacen la asignación de memoria y, por lo tanto, arreglan ubicaciones en el primer paso. Estos valores se tratan como constantes en el segundo paso donde se generan los códigos de operación.

Dos pases permiten, por ejemplo, colocar una tabla en la parte inferior del módulo, hacer que el ensamblador calcule automáticamente el tamaño de la tabla y luego usar ese valor de tamaño como una constante en el código más arriba en el módulo. Usaré Microchip MPASM para un PIC 16 en un ejemplo ya que se trata de un ensamblador de dos pasos. (Por cierto, el ensamblador ASM30 para la serie dsPIC es de una pasada y, como resultado, tiene limitaciones). Considere este código:

         movlw   table_size  ;get number of entries in list

         ...

table
         dw      11          ;list of favorite values
         dw      13
         dw      17
         dw      19
table_size equ   $ - table   ;number of list entries

El cálculo de $ -table se realiza en la primera pasada y el valor de TABLE_SIZE se establece en consecuencia. Esto se usa luego en la segunda pasada cuando se genera la instrucción MOVLW. Este tipo de cosas no es posible con un ensamblador de una sola pasada como ASM30.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas