Ch. 5 Project 이 글은 insight 출판사의 [밑바닥부터 만드는 컴퓨팅 시스템 / The Elements of Computing System]이라는 책에 있는 프로젝트(과제)를 수행하는 글입니다. 해외에서는 nand2tetris라는 이름의 프로젝트로 알려져 있습니다! 동일한 내용으로 구성되어 있으니, nand2tetris를 공부할 때 참고바랍니다. Chapter 5. 컴퓨터 아키텍처 - Project Chapter 5의 프로젝트에서는 최소한의 구성으로 만든 간단한 Computer를 HDL로 작성하여 구현한 뒤, ROM에 예제 프로그램을 올려 직접 실행까지 시켜본다. HDL을 통해 구현할 컴퓨터의 대략적인 구조는 아래와 같다. 여기에서 Instruction Memory(ROM)은 주어진 Chi..
이 글은 insight 출판사의 [밑바닥부터 만드는 컴퓨팅 시스템 / The Elements of Computing System]이라는 책에 있는 프로젝트(과제) 를 수행하는 글입니다. 과제 수행을 위한 언어로 C#을 선택했지만, Java와 거의 유사하여 Java를 알면 쉽게 이해할만한 코드들이예요. Chapter 4. 기계어 - Project Chapter 4의 프로젝트에서는 무언가를 설계하고 만들지는 않는다. Hack 언어로 간단한 프로그램을 작성해보는 과제를 해결해보면서 컴퓨터 플랫폼과 Hack언어, 기계어에 친해지는게 목적이다. 추후에 어셈블러, 컴파일러 등을 만들 때 Hack 언어와 동작에 대한 이해가 필요하므로 과제를 잘 수행해보자. 이번 과제를 해결하기 위해서는 교재에서 주는 도구가 필요합니..
이 글은 insight 출판사의 [밑바닥부터 만드는 컴퓨팅 시스템 / The Elements of Computing System]이라는 책에 있는 프로젝트(과제) 를 수행하는 글입니다. 과제 수행을 위한 언어로 C#을 선택했지만, Java와 거의 유사하여 Java를 알면 쉽게 이해할만한 코드들이예요. Chapter 3. Sequential Logic - Project Ch.1, 2에서는 입력 값에 따라 출력값이 변하는 Combination Chip(이하 조합 칩)을 다루었다. 그러나 이번 Chapter에서는 시간의 요소를 추가로 넣은 Sequential Chip(이하 순차 칩)을 다룰 예정이다. 조합 칩과 다르게, 순차 칩은 상태를 유지하는 기능을 갖고있다. 따라서 값을 저장하고 불러오는 기능을 순차 칩..
구현 추상화된 VM을 구현하는 작업은 두 가지 개념으로 나뉜다. 각 데이터구조(스택과 가상메모리 세그먼트)를 구현하여 VM환경을 에뮬레이션 하기 각 VM명령들을 대상 플랫폼에서 명령의 의미대로 수행되는 명령어들로 번역하기 이를 위해 아래의 구현 방법을 따를 것이다. VM요소와 연산들에서 Hack HW나 기계어로 이어지는 표준 매핑을 정의 이를 구현하는 SW설계 가이드라인을 제시 Hack 플랫폼에서의 표준 VM매핑 1부 VM은 플랫폼독립성이 핵심이기 때문에, VM 플랫폼의 아키텍처에 대한 조건이 없었다. 이를 이어나가 모든 HW에서 이 VM이 돌아갈 수 있게 설계를 해보자. 이는 프로그래머가 원하는대로 구현하도록 VM을 설계할 수 있다는 말이기도 하나, VM을 대상 플랫폼에 매핑하는 방법에 대한 가이드라인..