¿Escribir un ensamblador Z80 - lexing ASM y construir un árbol de análisis usando la composición?

Soy muy nuevo en el concepto de escribir un ensamblador e incluso después de leer una gran cantidad de material, todavía tengo dificultades para entender un par de conceptos.

¿Cuál es el proceso para dividir realmente un archivo fuente en tokens? Creo que este proceso se denomina lexing, y he buscado en todo el mundo un ejemplo de código real que tenga sentido, pero no puedo encontrar un ejemplo de código tan simple;

Cuando se analiza, ¿se debe pasar la información hacia arriba o hacia abajo en el árbol? La razón por la que pregunto es la siguiente, toma:

LD BC, nn

Es necesario convertirlo en el siguiente árbol de análisis una vez que esté en token (???)

  ___ LD ___
  |        |
 BC        nn

Ahora, cuando se recorre este árbol, debe producir el siguiente código de máquina:

01 n n

Si la instrucción hubiera sido:

LD DE,nn

Entonces la salida tendría que ser:

11 n n

Lo que significa que plantea la pregunta, ¿el nodo LD devuelve algo diferente según el operando o es el operando el que devuelve algo? ¿Y cómo se logra esto? Más ejemplos de códigos simples serían excelentes si el tiempo lo permite.

Lo que más me interesa es aprender algunos de los procesos en bruto aquí, en lugar de ver las herramientas avanzadas existentes, así que tenlo en cuenta antes de enviarmeYacc oFlexionar.

Respuestas a la pregunta(3)

Su respuesta a la pregunta