Поскольку ваш набор инструкций очень мал и основан на потоке из ответа mguica, я бы сказал, что следующий шаг - продолжить и / или полностью протестировать ваш набор инструкций. у тебя есть флаги? У вас есть инструкции для филиалов? Пока просто вручную сгенерируйте машинный код. Флаги хитры, в частности бит переполнения (V). Вы должны проверить перенос и выполнить на сумматоре msbit, чтобы понять это правильно. Поскольку набор инструкций достаточно мал, вы можете попробовать различные комбинации последовательных инструкций, после которых следуют или, и затем следует xor, и затем add, или после, и / или затем xor, и т. Д. И смешивать в ветвях. вернуться к флажкам, если xor и / или, например, не касаются переноса и переполнения, убедитесь, что вы видите перенос и переполнение как ноль и не затронуты логическими инструкциями, а перенос и переполнение равны единице и не затрагиваются, а также независимо показывают перенос и переполнение является отдельным, один на один выключенным, не затронутым логическим и т. д. убедитесь, что все условные ветви работают только с этим одним условием, ведут к различным условным ветвям с битами флага, которые игнорируются в обоих состояниях, гарантируя, что условная ветвь игнорирует их. Также убедитесь, что если условная ветвь не должна изменять их, она этого не делает. аналогично, если условие не вызывает ответвление, что условные флаги не затрагиваются ...
Мне нравится использовать рандомизацию, но это может быть больше работы, чем вы после. Мне нравится самостоятельно разрабатывать программный симулятор из набора инструкций, который, как мне кажется, легче использовать, так что иногда логику также проще использовать при пакетном тестировании. затем вы можете рандомизировать некоторый короткий список инструкций, варьируя инструкции и регистры, естественно тестировать тестер вручную, вычисляя некоторые результаты, как состояние регистров после завершения теста, так и состояние битов флага. Затем сделайте этот рандомизированный список длиннее, в какой-то момент вы можете взять длинный список инструкций и запустить его на симуляторе логики и посмотреть, получит ли логика те же результаты регистров и биты флага, что и симулятор набора инструкций, если они различаются, выясните Зачем. Если не попробуйте другую случайную последовательность и другую. Заполнение регистров простыми числами перед началом теста - очень хорошая идея.
возвращаемся к тестированию отдельных команд, и флаги проходят все угловые случаи 0xFFFF + 0x0000 0xFFFF + 1, подобные вещи располагаются по обе стороны от операндов и справа от них, а результаты находятся на расстоянии одного отсчета от места, где флаг изменяется точка, где флаг меняется и просто другая сторона этого. для логики, например, если они используют нулевой флаг, то имеют различные шаблоны данных, которые проверяют результаты, которые находятся по обе стороны от нуля и равны 0x0000, 0xFFFF 0xFFFE 0x0001 0x0002 и т.д. и т. д.
надеюсь, я понял ваш вопрос и не указал на очевидное или на то, что вы уже сделали до сих пор.