diff --git a/Chapters/0_Nand_to_Tetris.pdf b/Chapters/0_Nand_to_Tetris.pdf new file mode 100644 index 0000000..bf210f7 Binary files /dev/null and b/Chapters/0_Nand_to_Tetris.pdf differ diff --git a/Chapters/4_Machine_Language.pdf b/Chapters/4_Machine_Language.pdf new file mode 100644 index 0000000..90ef479 Binary files /dev/null and b/Chapters/4_Machine_Language.pdf differ diff --git a/README.md b/README.md index 807451f..cdf4420 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,29 @@ # [Nand2Tetris](https://www.nand2tetris.org) - From Nand to Tetris Building a Modern Computer From First Principles + By Noam Nisan and Shimon Schocken (MIT Press) -В этом репозитории я сохраняю свои работы в ходе прохождения курса [nand2tetris](https://www.nand2tetris.org) +В этом репозитории я сохраняю свои работы в ходе прохождения курса [Nand2tetris](https://www.nand2tetris.org) -Курс состоит из двух частей, в первой части 6 проектов: -- [Project 1: Boolean Logic](./Assignments/1_Boolean_Logic) +### Программа курса с моим описанием содержания каждой главы: +- #### Hardware + - [Project 1: Boolean Logic](./Assignments/1_Boolean_Logic) > Реализация [NAND-логики](https://en.wikipedia.org/wiki/NAND_logic), то есть создание основных логических блоков (AND, OR, NOT, XOR, MUX, DMUX, а так же их версий для работы с 16-битной шиной) с помощью операции NAND ([И-НЕ или Штрих Шеффера](https://ru.wikipedia.org/wiki/Штрих_Шеффера)) -- [Project 2: Boolean Arithmetic](./Assignments/2_Boolean_Arithmetic/) + - [Project 2: Boolean Arithmetic](./Assignments/2_Boolean_Arithmetic/) > Создание [простого арифметико-логического устройства (ALU)](./Assignments/2_Boolean_Arithmetic/ALU.hdl) с помощью логических блоков из первого проекта, способного складывать и вычитать 16-битные числа -- [Project 3: Memory](./Assignments/3_Sequential_Logic/) + - [Project 3: Memory](./Assignments/3_Sequential_Logic/) > Вводим единицу времени - такт, за счёт чего появляется текущее и следующее состояние, которое можно запоминать и изменять. Создаём простейшую память. На основе DFF компонента создаём [однобитный регистр](./Assignments/3_Sequential_Logic/Bit.hdl), затем [16-битный регистр](./Assignments/3_Sequential_Logic/Register.hdl), из них собираем блоки оперативной памяти ([RAM8](./Assignments/3_Sequential_Logic/RAM8.hdl), [RAM64](./Assignments/3_Sequential_Logic/RAM64.hdl), [RAM512](./Assignments/3_Sequential_Logic/RAM512.hdl), [RAM4K](./Assignments/3_Sequential_Logic/RAM4K.hdl), [RAM16K](./Assignments/3_Sequential_Logic/RAM16K.hdl)), а так же создаём простой [счётчик](./Assignments/3_Sequential_Logic/PC.hdl), который может использоваться для хранения текущей выполняемой инструкции и перехода к новой инструкции -- Project 4: Machine Language -- Project 5: Computer Architecture -- Project 6: Assembler + - [Project 4: Machine Language](./Assignments/4_Machine_Language/) + > Разбираемся с тем, что такое машинный код и как компьютер выполняет комманды записанные с его помощью. Вводим понятие ассемблера, и изучаем язык ассемблера для изучаемой платформы. [Пишем пару простых программ](./Assignments/4_Machine_Language/), в том числе [реализуем простое чтение данных с клавиатуры и вывод картинки на эмулятор экрана](./Assignments/4_Machine_Language/Fill.asm) + - Project 5: Computer Architecture + - Project 6: Assembler +- #### Software + - 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 ## Основная идея курса в коротком видео: -[![](./cover.jpg)](https://youtu.be/wTl5wRDT0CU) \ No newline at end of file +[![](./cover.jpg)](https://youtu.be/wTl5wRDT0CU)