티스토리 뷰

 

안녕하세요 잡다입니다.

어제는 다양한 프로그래밍 언어에 대해 주로 배워봤습니다.

오늘은 그 언어를 번역하는 것과 컴파일이라는 것을 배워볼 것입니다.

그럼 시작하겠습니다.

 


3과목 프로그래밍 일반 


4. 언어 번역 과정과 용어


4-1)언어 번역 과정

원시 프로그램->번역(컴파일러)->목적 프로그램->링커-로드 모듈->로더->실행

->번역과정을 나열하는 문제가 나옵니다. 각 용어가 뜻하는 의미를 기억하며 순서를 외우면 좋을 것입니다.

 

4-2)언어 번역 과정별 용어

원시 프로그램(Source Program)

사용자가 작성 한 프로그램으로, 기계어로 번역되기 이전의 프로그램

번역(Compile) 

언어 번역 프로그램을 사용하여 원시 프로그램을 번역하여 목적 프로그램을 생성

목적 프로그램(Object Program) 

원시 프로그램 이 기계어로 번역된 상태를 의미

링커(Linker)

여러 개의 목적 프로그램과 내장함수를 하나로 실행 가능하도록 프로그램을 생성(로드 모듈)

로드 모듈(Load Module) 

즉시 실행 가능한 상태의 프로그램

로더(Loader)

실행 가능한 프로그램(로드 모듈)을 보조기억장치에서 주기억장치로 읽어와서 실행될 수 있도록 하며, 기능에는 할당(Allocation), 연결(Linking), 재배치(Relocation), 적재(Loading)가 있다. 

각 기능의 수행 주체는 할당/연결 : 프로그래머, 재배치 : 어셈블러, 적재 : 로더이다.


->각 용어에 대한 정의를 묻고 답하는 문제가 많이 나옵니다. 순서대로 외우면 될 것 같습니다. 또한, 로더에 관한 기능 4가지와 수행 주체는 묶어서 반드시 외워야합니다.

 

5. 번역기의 종류


5-1)컴파일러(Compiler)

고급 언어로 작성된 원시 프로그램을 해석하고 분석하여 목적 프로그램을 생성한다.

컴파일러 언어 : C, FORTRAN, COBOL, PASCAL


5-2)인터프리터(Interpreter)

고급 언어로 작성된 원시 프로그램 명령문들을 한 번에 한 줄씩 읽어 들여서 실행하는 프로그램 기법 이다.

인터프리터 언어 : BASIC, LISP 등


5-3)어셈블러(Assembler)

어셈블리어를 기계어로 번역한다.

 

5-4)크로스 컴파일러(Cross Compiler)

원시 프로그램을 다른 기종에 맞는 기계어로 번역한다

 

5-5)링키지 에디터(Linkage Editor)

독자적으로 번역된 여러 개의 목적 프로그램과 내장 함수들을 하나로 실행할 수 있는 프로그램을 생성


->정말 한번씩 다 출제 되었던 것입니다. 그만큼 중요도가 있다는 것이며, 컴파일러와 인터프리터의 차이목적 프로그램의 유무라는 것을 반드시 기억해두어야합니다.


 

6. 컴파일 세부 과정


6-1)컴파일 세부 과정

선행 처리 → 어휘 분석 → 구문 분석 → 의미 분석 → 중간 코드 생성 → 코드 최적화 → 코드 생성

->문제로 크게 나오지는 않습니다. 하지만 주황색으로 적힌 순서는 알고 있는 것이 좋습니다. 최적화하여 토큰을 만들고 파스트리를 만들고, 파스트리를 분석하는 과정으로 알고 있으면 됩니다. 밑에 설명보시면 이해가 더 잘 되실 것입니다.


6-2)선행 처리(Preprocessor)

원시 프로그램을 기계어로 된 목적 프로그램으로 번역하는 대신에 기존의 고수준 컴파일러 언어로 전환하는 역할을 수행한다.

->컴파일과정에 도움을 줄 수 있도록 확장된 원시 프로그램을 만드는 과정이라고 알고 있으면 될 것 같습니다.

 

6-3)어휘 분석(Lexical Analysis)

원시 프로그램을 하나의 긴 문자열로 보고 문자를 문법적으로 의미 있는 단위인 토큰 (Token)으로 분할해 낸다.

->큰이 나오면 어휘 분석이다라고 공식처럼 외워주세요.

 

6-4)구문 분석(Syntax Analysis)

토큰들을 문법에 따라 분석하는 작업으로 하향식 파싱과 상향식 파싱이 있다.

하향식은 루트->터미널 노드 쪽으로 주어진 문자열(preorder순)에 대해 파스트리를 만드며 좌측 유도 과정으로 볼 수 있다. 파서의 종류에는 Recursive Descent Parser, Predictive Parser, LL Parser 가 있다.

상향식은 터미널 노드->루트 쪽으로 파스트리를 만드며, Shift-Reduce 파싱이라고도 한다. 주어진 문자열이 루트 노드로 축약 가능 유무에 따라 올바른, 틀린 문장으로 판단한다. 종류에는 Shift Reduce Parser, LR Parser가 있다.

->이해가 어려울 겁니다. 상향은 순행, 하향은 역행으로 기본적으로 이해하시고, 파스트리를 만드는 과정이라고 생각하시면 됩니다. 한번씩 종류를 묻는 문제가 나오는데, 외우기 힘드시면 그냥 넘어갑시다.

 

6-5)구문 분석기(파서)의 역할

입력된 토큰이 프로그래밍 언어의 문법에 맞는지 판단하기 위해 파스트리를 출력한다.

 

6-6)의미 분석(Semantic Analysis)

파스트리가 어떠한 의미와 기능인지 분석

 

6-7)디버깅(Debugging)

디버거(오류 수정 작업 소프트웨어)를 통해 논리적 오류를 발견하고 수정하는 작업이다.

 

 

 

---------------------------------------------------------

전문적인 용어가 생소하신 분들은 많이 어려우실 겁니다.

하지만 키워드 중심으로 외우고, 순서와 용어를 묶어 공부하시면 이해가 빨리 될 것 입니다.

모르는 것을 공부하여 알아간다는 것은 훌륭한 것입니다.

다 같이 화이팅합시다.


공감과 구독, 댓글은 큰 힘이 됩니다.ㅎㅎ

 

반응형
댓글