Помощь Joomla



Вычисления с Помощью Radio Javascript

Снова эмулятор Радио-86РК на JavaScript  Октябрь 14, 2016 – 14:28

Тесты, тесты, тесты. Прошлое, настоящее и будущее.

Когда я начинал проект эмулятора Радио-86РК на JavaScript написание, собственно, модели процессора Intel 8080 (КР580ВМ80А) было мучительной задачей. Конечно, в сравнении со современными процессорами старичок 8080 выглядит как Жигули первой модели перед новой БМВ. Но все равно, реализовать логику около двух сотен команд с десятком регистров и при этом нигде не налажать практически невозможно. Поэтому отладка выглядела так: делается изменение, затем пробуется парочка программ для РК (в основном игры), и если игра визуально не глючит, то значит все более менее нормально.

Так я привел эмулятор примерно в работающее состояние, и большинство программ для РК типа “работали”. Но, увы, после завершения отладки, мне больше не хотелось трогать код эмуляции процессора, так как перепроверка все была реально мучительной и более того ненадежной. Но по-хорошему, код эмуляция нуждался в доработках.

На следующем витке эмуляторного приступа, когда я решил запустить РК на Maximite, я разыскал доступные тесты для Intel 8080, написанные на его же собственном коде, и оформил их прямо в сборке стационарно. В итоге проект эмулятора процессора отпочковался в подпроект i8080-core. Это чистый эмулятор Intel 8080, непривязанный к конкретной аппаратуре. В процессе сборки запускаются четыре теста, один из которых, 8080-8085 CPU Exerciser, является, пожалуй, единственным способ убедиться в “похожести” эмулятора на реальный процессор. Он был адаптирован Вячеславом Славинским в процессе работы над эмулятором компьютера Вектор на FPGA.

Интересная особенность этого теста в том, что он не проверяет поведение процессора по документации, а просто проводит множество вычислений, задействуя как можно больше команд в как можно большем количестве комбинаций, считает контрольную сумму (CRC32) результат и сравнивает с эталонной. Эталонные значения были изначально получены прогоном теста на реальном процессоре.

С одной стороны данный тест не дает точного места, где происходит сбой, а просто говорит, например, что где-то в командах арифметики что-то работает не так, поэтому контрольная сумма не совпадает.

В другой стороны этот тест позволяет сравнить реальное поведение процессора, а не “документированное”, так как порой, как это водится, есть недокументированное или плохо документированное поведение.

Source: demin.ws

Похожие публикации:

  1. Таблицу Помощью Javascript
  2. Анимация Помощью Javascript
  3. Css Изменения с Помощью Javascript