이전 글에서도 몇 번 봤던 그림을 다시 보고 시작해보자.이전 글까지 총 7개의 글에 걸쳐 lexical → Syntax → Semantic 분석을 알아봤었다.이제는 Code Generation과정에 대해 알아보자. 컴파일러의 역할컴파일러는 단순히 사람이 작성한 코드를 아무생각없이 기계어로 바꿔주는 것이 아니다.데이터가 저장공간에 어떻게 저장되고 사용될지를 관리하기도 한다.또 더 효율적인 코드가 되도록 코드를 바꿀 수도 있다.데이터 저장 위치 결정소프트웨어적인 관점에서 CPU는 연산장치, 레지스터, 메모리로 나눠서 이해해볼 수 있다.여기서 우리는 데이터를 레지스터에 저장할지, 메모리에 저장할지 결정해야한다.일반적으로 전역 변수나 static변수는 메모리에 저장한다.로컬 변수들 중에서도 배열, 구조체 같은 ..