Программа как данные
Восемнадцатое вступление подводит к главному открытию части: программа — это обычные числа в памяти. Опыт — с ROM и двумя лампами адреса.
Опыт: комната с ячейками
Память ROM — комната, где в каждой ячейке лежит своё число. Двумя лампами задаётся адрес: адрес 0 показывает 5, адрес 1 — девятку, адрес 2 — семьдесят семь. Ячейки уже заполнены: меняйте адрес — числа меняются сами, без всякого запуска программы.
Правило: команда — это число в памяти
В ячейках просто числа, и каждое может оказаться командой: когда процессор читает их по счётчику команд, они работают как команды. Разница не в самих ячейках, а в том, откуда их читает процессор. В компьютере этого курса память разделена (архитектура Гарварда): ROM хранит команды, RAM — данные, которые программа кладёт и берёт во время работы. Таблица опыта:
| Адрес | Число в ячейке |
|---|---|
| 0 | 5 |
| 1 | 9 |
| 2 | 77 |
| 3 | 0 |
Перенос: оба тумблера погашены
Обе лампы адреса погашены — выбран адрес 0. Ответ без щелчков: 5, вы видели это в опыте. Адрес 0 — не пустота, а первая ячейка; адрес выбирает ячейку, а выход Data показывает её содержимое.
Зачем это нужно
Это вступление к финальному уровню части: вы соберёте целый компьютер. Его ROM — та же комната с ячейками: счётчик команд перебирает адреса один за другим, как ваши две лампы, и числа из ячеек становятся командами: сложить, записать, прыгнуть.