Число-команда: два бита выбирают операцию
Перед тринадцатым уровнем игра предлагает короткое интерактивное вступление: вы собираете числа двумя лампами-битами и сами переводите число-команду в биты-переключатели. Здесь — то же самое в тексте.
Опыт: две лампы и число
Перед вами две лампы: число 1 — первая лампа, число 2 — вторая. Включайте лампы и смотрите на сумму: соберите 2, потом соберите 3. Заметьте: 3 получается только когда горят обе. Каждая лампа добавляет своё постоянное число — вес: выключены обе — 0, обе горят — 3. Четыре сочетания — по одному на каждое число от 0 до 3.
| Лампа 2 | Лампа 1 | Число |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 2 |
| 1 | 1 | 3 |
Формализация: число-команда = биты
Вы только что записали число двумя битами: первая лампа — младший бит, вторая — старший. 0=00, 1=01, 2=10, 3=11. Одна лампа — один бит выбора. На этом уровне число-команда называется OpSelect: 0 = сложение (ADD), 1 = И (AND), 2 = ИЛИ (OR). Вместо «включи лампу 2» схема скажет «бит 1 равен единице» — и это выберет OR.
Перенос: биты выбирают операцию
BusMUX — тот же мультиплексор с девятого уровня, но 8-битный: он выбирает не два бита, а две шины. Число-операция раскладывается на биты-переключатели: бит 0 OpSelect выбирает между ADD и AND, бит 1 решает, заменить ли результат на OR. OpSelect=2 — это 10: первая лампа погашена, вторая горит — бит 0 равен 0 (первый MUX пропускает один из результатов пары), бит 1 равен 1 (второй MUX подставляет OR).
Зачем это нужно
Двух бит хватает на 4 команды — ровно столько и нужно: ADD, AND, OR и запас. На следующем уровне (АЛУ, четырнадцатый) появится третий бит и семь операций. В процессоре точно так же работает любая команда: число из памяти раскладывается на биты, и каждый бит переводит свой «стрелочный перевод» — вплоть до выбора, куда прыгнет программа.