Счетчик команд как управление в виде данных
Регистр pc определяет следующую команду, поэтому контроллер может продвигаться вперед, преобразуя полное состояние машины.
Как одна процедура перехода может представлять несколько команд машины?
- Использование значения pc для выбора одной команды
- Совместное продвижение регистров управления и данных
- Распознавание состояния останова в контроллере
Состояние содержит pc, a, b, temp и cycles. Каждая ветка cond реализует ровно одну команду и записывает pc той команды, которая должна следовать далее.
Команда 0 проверяет b и либо входит в цикл вычисления остатка, либо переходит к останову на pc 5. Остальные команды перемещают значения через temp перед возвратом управления к проверке.
- Вывод
- —
- Значение
- —
- Диагностика
- —
Первая программа останавливается со значением (5 2 0 0 2). Значение pc 5 обозначает останов, регистр a содержит 2, и завершились два цикла вычисления остатка.
Проследите за повторяющейся последовательностью pc 0, 1, 2, 3, 4. Финальная проверка меняет pc напрямую с 0 на значение останова 5.
Измените программу и сравните результат.
Добавьте регистр, который подсчитывает каждую команду, а не только завершенные циклы вычисления остатка.
Показать подсказку
Каждая ветка cond должна увеличивать счетчик команд ровно один раз.