구현 추상화된 VM을 구현하는 작업은 두 가지 개념으로 나뉜다. 각 데이터구조(스택과 가상메모리 세그먼트)를 구현하여 VM환경을 에뮬레이션 하기 각 VM명령들을 대상 플랫폼에서 명령의 의미대로 수행되는 명령어들로 번역하기 이를 위해 아래의 구현 방법을 따를 것이다. VM요소와 연산들에서 Hack HW나 기계어로 이어지는 표준 매핑을 정의 이를 구현하는 SW설계 가이드라인을 제시 Hack 플랫폼에서의 표준 VM매핑 1부 VM은 플랫폼독립성이 핵심이기 때문에, VM 플랫폼의 아키텍처에 대한 조건이 없었다. 이를 이어나가 모든 HW에서 이 VM이 돌아갈 수 있게 설계를 해보자. 이는 프로그래머가 원하는대로 구현하도록 VM을 설계할 수 있다는 말이기도 하나, VM을 대상 플랫폼에 매핑하는 방법에 대한 가이드라인..
이 장의 목표는 객체지향 고수준 언어의 컴파일러_compiler를 만드는 것을 준비하는 것이다! 고수준의 프로그램을 중간 코드(10-11장)로 만들고, 중간 코드를 기계어로 번역(7-8장)한다. 이는 70s에 등장한 오래된 개념이지만, C#과 Java같은 언어에 채택되어 현재까지도 사용되고 있다. 기본개념 플랫폼이 아닌 가상머신(VM)에서 실행가능한 중간코드를 만드는 것이다. VM은 컴퓨터상에서 구현가능한 추상적인 컴퓨터이다. 이를 통해 코드 이동성_code transportability를 확보할 수 있다. (동일한 코드를 수정하지 않거나, 약간의 수정만으로도 여러 플랫폼이나 환경에서 이용이 가능한 상태) VM구현에는 SW인터프리터, 특수목적 HW, VM프로그램으로 특정 플랫폼 기계어로 번역 등이 있다...