티스토리 뷰
1-pass 컴파일러는 원시 프로그램을 한번만 읽어서 목적코드로 번역하도록 컴파일의 전 과정을 하나의 pass로 구현한 방법이다. 1-pass 컴파일러는 원시 프로그램을 한번만 읽어 가면서 번역을 하기 때문에 현재 번역되고 있는 위치에서 아직까지 번역하지 않은 부분으로의 분기(forward jumping)가 발생하는 경우 정확한 위치를 결정할 수 없기 때문에 빈칸으로 남겨 두었다가 계속되는 번역에서 정확한 정보를 얻었을 때 빈칸으로 남겨 두었던 부분을 채워 넣는 back patching을 필요로 하는 문제점이 있으나 원시 프로그램을 한번만 읽어서 직접 목적코드를 생성하므로 2-pass 컴파일러에 비해 컴파일 속도가 빠른 장점을 가진다.
2-pass 컴파일러는 입력 프로그램을 모두 두번 읽어서 목적코드를 생성하도록 구현된 컴파일러이다. 입력 프로그램을 첫번째 읽으면서 프로그램상에서 정의하고 사용된 심볼들에 대한 테이블을 먼저 생성한 후 두 번째 읽으면서 심볼 테이블의 정보를 이용하여 목적코드를 생성한다. 따라서, forward jumping과 같은 경우에도 2-pass 컴파일러에서는 back patching을 필요로 하지 않는다. 2-pass 컴파일러는 컴파일러를 기능적으로 독립된 여러 모듈로 구성할 수 있기 때문에 이식성(portability)이 높으며 중간코드를 이용한 최적화를 이용함으로써 특정 기계와 독립적인 최적화가 가능하며 프로그래머가 프로그래밍을 하는데 많은 융통성을 부여해 주는 장점이 있다. 반면, 두 번의 처리에 의해 목적코드를 생성하므로 한번의 처리에 의해 목적코드를 생성하는 1-pass 컴파일러보다 컴파일하는 속도가 느리다는 단점이 있으나, 다른 특징들로 인하여 일반적으로 2-pass 컴파일러를 많이 사용하고 있다.
출처
http://cafe.naver.com/comeonhakjum.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1416
2-pass 컴파일러는 입력 프로그램을 모두 두번 읽어서 목적코드를 생성하도록 구현된 컴파일러이다. 입력 프로그램을 첫번째 읽으면서 프로그램상에서 정의하고 사용된 심볼들에 대한 테이블을 먼저 생성한 후 두 번째 읽으면서 심볼 테이블의 정보를 이용하여 목적코드를 생성한다. 따라서, forward jumping과 같은 경우에도 2-pass 컴파일러에서는 back patching을 필요로 하지 않는다. 2-pass 컴파일러는 컴파일러를 기능적으로 독립된 여러 모듈로 구성할 수 있기 때문에 이식성(portability)이 높으며 중간코드를 이용한 최적화를 이용함으로써 특정 기계와 독립적인 최적화가 가능하며 프로그래머가 프로그래밍을 하는데 많은 융통성을 부여해 주는 장점이 있다. 반면, 두 번의 처리에 의해 목적코드를 생성하므로 한번의 처리에 의해 목적코드를 생성하는 1-pass 컴파일러보다 컴파일하는 속도가 느리다는 단점이 있으나, 다른 특징들로 인하여 일반적으로 2-pass 컴파일러를 많이 사용하고 있다.
출처
http://cafe.naver.com/comeonhakjum.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1416
반응형
'Archive > ★ IT __이야기' 카테고리의 다른 글
클라우드 구성을 위한 레이아웃 및 오픈소스 자료. (0) | 2011.08.17 |
---|---|
QR코드(큐알코드)로 나를 표현하는 색다른 즐거움, 꿍알 (0) | 2011.03.02 |
안철수 박사님 특강 - 아이폰의 교훈 3가지 (0) | 2011.03.02 |
개발자-학생 합작 오픈소스 프로젝트! WoC 2008 (0) | 2008.11.24 |
크롬 VS IE 8 (0) | 2008.10.30 |
댓글