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

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

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

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

LD BC, nn

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

  ___ LD ___
  |        |
 BC        nn

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

01 n n

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

LD DE,nn

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

11 n n

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

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

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

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