Написание ассемблера Z80 - лексизация ASM и построение дерева разбора с использованием композиции?

Я очень плохо знаком с концепцией написания ассемблера, и даже после прочтения большого количества материала яЯ все еще испытываю трудности, оборачиваясь вокруг нескольких понятий.

Как происходит процесс разбиения исходного файла на токены? Я считаю, что этот процесс называется лексинг, и яя искал реальные примеры кода, которые имеют смысл, но я могуочень простые примеры кода приветствуются;)

При анализе нужно ли когда-либо передавать информацию вверх или вниз по дереву? Причина, по которой я спрашиваю, заключается в следующем:

LD BC, nn

Он должен быть превращен в следующее дерево разбора после токенизации (???)

  ___ LD ___
  |        |
 BC        nn

Теперь, когда это дерево пройдено, ему нужно создать следующий машинный код:

01 n n

Если инструкция была:

LD DE,nn

Тогда вывод должен быть:

11 n n

Это означает, что это поднимает вопрос, возвращает ли узел LD что-то другое в зависимости от операнда или это операнд, который возвращает что-то? И как это достигается? Более простые примеры кода были бы превосходны, если позволяет время.

Я больше всего заинтересован в изучении некоторых необработанных процессов здесь, а не в том, чтобы взглянуть на передовые существующие инструменты, поэтому, пожалуйста, имейте это в виду, прежде чем отправлять меня вYacc или жеFlex.

Ответы на вопрос(3)

Ваш ответ на вопрос