Программа как данные

Восемнадцатое вступление подводит к главному открытию части: программа — это обычные числа в памяти. Опыт — с ROM и двумя лампами адреса.

Опыт: комната с ячейками

Память ROM — комната, где в каждой ячейке лежит своё число. Двумя лампами задаётся адрес: адрес 0 показывает 5, адрес 1 — девятку, адрес 2 — семьдесят семь. Ячейки уже заполнены: меняйте адрес — числа меняются сами, без всякого запуска программы.

Правило: команда — это число в памяти

В ячейках просто числа, и каждое может оказаться командой: когда процессор читает их по счётчику команд, они работают как команды. Разница не в самих ячейках, а в том, откуда их читает процессор. В компьютере этого курса память разделена (архитектура Гарварда): ROM хранит команды, RAM — данные, которые программа кладёт и берёт во время работы. Таблица опыта:

АдресЧисло в ячейке
05
19
277
30

Перенос: оба тумблера погашены

Обе лампы адреса погашены — выбран адрес 0. Ответ без щелчков: 5, вы видели это в опыте. Адрес 0 — не пустота, а первая ячейка; адрес выбирает ячейку, а выход Data показывает её содержимое.

Зачем это нужно

Это вступление к финальному уровню части: вы соберёте целый компьютер. Его ROM — та же комната с ячейками: счётчик команд перебирает адреса один за другим, как ваши две лампы, и числа из ячеек становятся командами: сложить, записать, прыгнуть.

Пройти вступление в игре · Гайд уровня 18 · Все вступления