Pisanie asemblera Z80 - lexing ASM i budowanie drzewa analizy przy użyciu kompozycji?

Jestem bardzo nowy w koncepcji pisania asemblera i nawet po przeczytaniu dużej ilości materiału wciąż mam problemy z zawinięciem kilku koncepcji.

Jak wygląda proces dzielenia pliku źródłowego na tokeny? Uważam, że ten proces nazywany jest leksykowaniem, a ja szukałem prawdziwych przykładów kodu, które mają sens, ale nie mogę znaleźć czegoś, więc bardzo proste przykłady kodu są bardzo mile widziane;)

Czy podczas analizowania informacje muszą być przekazywane w górę lub w dół drzewa? Powód, dla którego pytam, jest następujący: weź:

LD BC, nn

Po tokenized (???) należy przekształcić je w następujące drzewo analizujące

  ___ LD ___
  |        |
 BC        nn

Teraz, gdy to drzewo przechodzi, musi wygenerować następujący kod maszynowy:

01 n n

Jeśli instrukcja była:

LD DE,nn

Wtedy wynik musiałby być:

11 n n

Oznacza to, że rodzi się pytanie, czy węzeł LD zwraca coś innego w oparciu o operand, czy jest to operand, który coś zwraca? A jak to się osiąga? Bardziej proste przykłady kodu byłyby doskonałe, gdyby czas na to pozwolił.

Jestem najbardziej zainteresowany poznaniem niektórych surowych procesów tutaj, zamiast patrzeć na zaawansowane istniejące narzędzia, więc proszę o tym pamiętać przed wysłaniem mnie na adresYacc lubZgiąć.

questionAnswers(3)

yourAnswerToTheQuestion