Во многих проектах я был вовлечен в, большое усилие было потрачено в начале, пишущий "спецификацию" в Microsoft Word. Этот процесс достиг высшей точки в "знаке" от встречи, когда важные шишки покупали акции на проекте, и после той встречи, никто никогда не смотрел на этот документ снова. Эти документы являются полной пустой тратой времени и не отражают, как программное обеспечение на самом деле разработано. Нельзя сказать там не является другими ценными артефактами проектирования приложений. Они обычно содержатся на учетных карточках, снимках электронных досок, салфеток коктейля и других подобных медиа, которые обеспечивают своего рода временную шкалу для дизайна приложения. Это, обычно реальные спецификации приложения. Если Вы собираетесь записать документ Word, (и я особенно не говорю, что Вы должны) делать это в конце проекта. По крайней мере, это точно представит то, что было сделано в коде и могло бы помочь кому-то в будущем как команда QA или следующие разработчики версии.
Ну, структура дерева, которое вам действительно нужно инструкция, которая работает с регистром и памятью режим адресации, включающий смещение смещения и индексный регистр будет выглядеть так:
INSTRUCTION-----+
| | |
OPCODE REG OPERAND
| |
OFFSET INDEXREG
И да, вы хотите передавать значения вверх и вниз по дереву. Метод для формального определения такой передачи значений называется "атрибутные грамматики", и вы украсите грамматику для своих langauge (в вашем случае синтаксис ассемблера) с передачей значений и вычисления по этим значениям. Для получения дополнительной информации, см. Википедию по грамматикам атрибутов .
В вопросе, относящемся к , вы задали , я обсуждал инструмент, DMS , который обрабатывает грамматику выражений и строит деревья. Как инструмент манипулирования языком, DMS сталкивается точно с теми же взлетами и падениями проблемы с информационными потоками дерева. Вас это не должно удивлять, что как высококлассный инструмент для манипулирования языком, он может обрабатывать атрибутивные вычисления грамматики напрямую.
Нет необходимости строить дерево синтаксического анализа. Коды операций Z80 очень просты. Они состоят из кода операции и 0, 1 или 2 операндов, разделенных запятыми. Вам просто нужно разбить код операции на (максимум 3) компоненты с помощью очень простого парсера - никакого дерева не требуется.
На самом деле, коды операций имеют не байтовую базу, а восьмеричную. Лучшее описание, которое я знаю, это ДЕКОДИРОВАНИЕ ОПКОДОВ Z80 .