5.2 KiB
Nand2Tetris
From Nand to Tetris
The Elements of Computing Systems
Building a Modern Computer From First Principles
By Noam Nisan and Shimon Schocken (MIT Press)
В этом репозитории я сохраняю свои работы в ходе прохождения курса Nand2tetris, основанного на книге The Elements of Computing Systems: Building a Modern Computer From First Principles, в рамках которого мы с нуля создадим 16-битный компьютер, способный запустить тетрис. Спасибо Ноаму Нисану и Шимону Шокену за понятную и интересную книгу, а главное за крутейшие лабораторные работы!
Я услышал и забыл. Я увидел и запомнил. Я сделал и понял
Конфуций
Программа курса с моим описанием содержания каждой главы:
-
Hardware
- Project 1: Boolean Logic
Реализация NAND-логики, то есть создание основных логических блоков (AND, OR, NOT, XOR, MUX, DMUX, а так же их версий для работы с 16-битной шиной) с помощью операции NAND (И-НЕ или Штрих Шеффера)
- Project 2: Boolean Arithmetic
Создание простого арифметико-логического устройства (ALU) с помощью логических блоков из первого проекта, способного складывать и вычитать 16-битные числа
- Project 3: Memory
Вводим единицу времени - такт, за счёт чего появляется текущее и следующее состояние, которое можно запоминать и изменять. Создаём простейшую память. На основе DFF компонента создаём однобитный регистр, затем 16-битный регистр, из них собираем блоки оперативной памяти (RAM8, RAM64, RAM512, RAM4K, RAM16K), а так же создаём простой счётчик, который может использоваться для хранения текущей выполняемой инструкции и перехода к новой инструкции
- Project 4: Machine Language
Разбираемся с тем, что такое машинный код и как компьютер выполняет комманды записанные с его помощью. Вводим понятие ассемблера, и изучаем язык ассемблера для создаваемой платформы. Пишем пару простых программ, в том числе реализуем простое чтение данных с клавиатуры и вывод картинки на эмулятор экрана
- Project 5: Computer Architecture
Завершаем работу над аппаратной составляющей компьютера. Собираем модуль памяти, позволяющий, в том числе, взаимодействовать с клавиатурой и экраном. Собираем ЦПУ из ранее созданных ALU, счётчика и регистров. Из памяти, ЦПУ и чипа ROM с набором инструкций собираем компьютер Hack
- Project 1: Boolean Logic
-
Software
- Project 6: Assembler
- Project 7: VM I: Stack Arithmetic
- Project 8: VM II: Program Control
- Project 9: High-Level Language
- Project 10: Compiler I: Syntax Analysis
- Project 11: Compiler II: Code Generation
- Project 12: Operating System
