1.1 배경 1.1.1 불 대수
이 장에서는 논리 게이트를 사용해 숫자를 어떻게 표현하고 계산할지 고민하고, 1장에서 만든 논리 게이트를 사용해 온전히 작동하는 산술 논리 연산 장치를 완성할 것이다.
조합 논리의 결과 데이터는 연산이 종료된 후 소멸되기 때문에 더 복잡한 연산을 하기 위해서는 데이터를 기억할 필요가 있다. 이때, 데이터를 기억하고 기억한 데이터를 사용하기 위해서 '순차 논리'를 사용한다.
기계어는 대상 하드웨어 플랫폼에서 직접적으로 명령을 실행하고, 하드웨어를 완전히 제어하는 것이 목적이다. 새로운 컴퓨터 시스템을 이해려면 그 시스템의 기계어 프로그램을 먼저 살펴보는 것이 많은 도움이 될 것이다.
메모리, CPU, ROM으로 하나의 컴퓨터 칩을 만든다.
우리는 1장부터 5장까지 공부하며 nand게이트부터 CPU까지 만들었다. 6장부터는 소프트웨어 계층에 초점을 맞추어서 컴파일러, 객체 기반 프로그래밍 언어, 운영체제까지 개발할 것이다. 먼저 가장 기본이 되는 어셈블러를 먼저 만들 것이다,
이번 장은 일반적인 객체 지향 고수준 언어용 컴파일러를 만드는 첫 단계에 해당한다. 우리는 이 작업을 두 단계로 나누어 10~11장에서는 고수준 프로그램이 중간 코드로 번역되는 과정, 그 후에 7~8장에서 중간 코드가 기계어로 번역되는 과정을 살펴볼 예정이다.
7장에서 만든 VM에 이어서 중첩 서브루틴을 처리하는데 쓰이는 '스택 기반 구조'를 설계하고 구현할 것이다.