NAND에서 Tetris까지 - 현대적인 컴퓨터를 만듭니다

이 repo는 Coursera에서 이용할 수있는 두 가지 과정을 말합니다.
- 첫 번째 원칙에서 현대 컴퓨터를 구축하십시오 : NAND에서 Tetris (1 부)까지.
- 첫 번째 원칙에서 현대 컴퓨터 구축 : NAND TETRIS PART II
부울 대수학과 논리 문을 시작으로 완전한 기능적인 일반 목적 컴퓨터로 끝나는 곳에서 컴퓨터를 건설하여 자체 가속 여행을 할 것입니다. 하드웨어 추상화에 대해 배우고 직접 구현하며 궁극적으로 복잡한 시스템을 구축하는 스릴을 경험합니다. 각 폴더에는 과제에 대한 내 자신의 솔루션과 개인 메모가 포함되어 있습니다.
- 프로젝트 1 : 기본 논리 게이트 구축과 같은 및, 또는 멀티플렉서
- 프로젝트 2 : 다양한 가산기 칩 구축 및 산술 로직 유닛 (ALU)
- 프로젝트 3 : 등록기, 메모리 유닛 및 임의의 액세스 메모리 (RAM) 빌딩
- 프로젝트 4 : 기계 언어 학습 및 저수준 프로그램 작성
- 프로젝트 5 : 프로젝트 1-3의 칩셋을 사용하여 CPU (Central Processing Unit)와 프로젝트 4에서 기계 언어로 프로그램을 실행할 수있는 하드웨어 플랫폼을 구축합니다.
- 프로젝트 6 : 상징적 기계 언어로 작성된 프로그램을 이진 코드로 번역하기위한 어셈블러 개발.
- 프로젝트 7 :이 모듈에서는 스택 기반 가상 머신을 구축하기 시작합니다. 가상 머신 아키텍처와 VM 언어 (Java의 바이트 코드 와 유사)를 발표 한 후 VM 프로그램을 해킹 기계 언어로 변환하도록 설계된 기본 VM 번역기 (Java의 JVM 과 유사)를 개발합니다.
- 프로젝트 8 : 이전 모듈에서 가상 머신 추상화를 제시하고 VM 언어의 산술 및 메모리 액세스 명령을 구현하는 기본 VM 번역기를 개발했습니다. 이 모듈에서는 나머지 VM 언어의 분기 및 기능 호출 명령을 구현하여 VM 번역기를 완성합니다.
- 프로젝트 9 :이 모듈에서 우리는 잭 언어와 잭 프로그래밍을 소개합니다. 이 모듈은 Jack을 사용하여 선택한 간단한 대화식 응용 프로그램을 개발할 프로젝트에서 마무리됩니다.
- 프로젝트 10 : 하위 수준의 언어로 고급 프로그램을 번역하는 것은 두 가지 잘 정의되고 다소 독립적 인 단계로 구성됩니다. 구문 분석 및 코드 생성 .Syntax 분석-이 모듈의 주제- 어휘 분석 ( 토큰 화 ) 및 구문 분석은 두 가지 하위 단계로 구성됩니다. 결과 프로젝트는 Jack Analyzer 가 될 것입니다. 이는 실행 가능한 코드를 생성하지 않고 Jack 프로그램의 구문을 공개하는 프로그램입니다.
- 프로젝트 11 : 이전 프로젝트에서는 Jack Language 용 구문 분석기를 구축했습니다. 이것에서 우리는이 분석기를 본격적인 잭 컴파일러로 변형시킵니다. 여기에는 XML 코드를 실행 가능한 VM 코드를 생성하는 로직으로 생성하는 분석기의 논리를 수정해야합니다.
- 프로젝트 12 : 운영 체제는 고급 프로그램과 실행되는 기본 하드웨어 간의 간격을 폐쇄하도록 설계된 소프트웨어 서비스 모음입니다. Java 및 Python과 같은 현대 언어는 이러한 많은 OS 서비스를 구현하는 표준 클래스 라이브러리와 함께 배포됩니다. 이 프로젝트에서는 비슷한 클래스 라이브러리 세트에 포장 될 기본 OS를 개발할 것입니다. OS는 Linux가 C에서 개발 된 방식과 유사한 부트 스트랩 전략을 사용하여 Jack에서 개발 될 것입니다.