Итоги

Вы собрали из транзисторов то, чем считает процессор.

  • Полусумматор — XOR и AND: сумма и перенос одного разряда.
  • Полный сумматор принимает перенос от соседа; четыре и восемь таких — сложение столбиком, перенос бежит по разрядам.
  • Дополнительный код — отрицательные числа без новой схемы: −B — это перевёрнутые биты и плюс 1. Вычитание — тот же сумматор с XOR на входе.
  • Флаги C, Z, N, V — что процессор знает об ответе. Сравнение CMP — вычитание, от которого остаются только флаги.
  • Калькулятор ± — ещё одно вычитание, 0 − S, превращает ответ в знак и модуль.
  • Десятичный счёт (бонус) — коррекция «+6» после каждой цифры.

Итоговый калькулятор — 1 208 транзисторов.

Что дальше

  • Ускоренный перенос. В нашем сумматоре перенос бежит по разрядам по очереди: старший разряд ждёт всех младших. Для 8 бит это незаметно, а для 64 — медленно. Настоящие процессоры заранее вычисляют, родится ли перенос в группе разрядов, и не ждут волну.
  • Умножение — это сложение со сдвигом: 13 × 5 = 13 × 4 + 13 × 1. Сумматор, регистр и сдвиг — и машина умножает столбиком, как в школе.
  • АЛУ. Добавь к сумматору AND, OR, XOR и выбор результата — получится арифметико-логическое устройство, сердце процессора.