잡동사니11 [컴파일러 구조와 원리] - 구문 해석( lexical analyze ) 구문 해석 수식을 해석할 때는 연산자의 우선순위를 고려해야 되는 것처럼소스코드는 여러 가지 다양한 방법으로 해석되어야 한다. 구문해석 => ( 어휘 해석, 구문 해석 ) 어휘해석(lexical analyze)는 소스 코드를 단어로 분할하는 작업. oter. 스캔(scan)ex) ‘ x = 1 + 2’ ==> ‘x’ ‘=’ ‘1’ ‘+’ ‘2’어휘해석 담당 모듈을 어휘해석기(lexical analyzer) 또는 스캐너(scanner)라고 한다. int main(int argc, char** argv){printf(“Hello, World! \n”); // 인사return 0;}intmain(intargc,char**argv){printf(“Hello, World! \n”);return0;}*어휘해석 단계에.. 2015. 12. 31. [컴파일러 구조와 원리] - 컴파일의 4단계 컴파일의 4단계 1.구문해석 소스코드 해석 -> 파즈(Parse) 또는 구문 해석(Syntax analyzing) 소스코드 해석기 -> 파서(parser) 또는 구문 해석기(syntax analyzer) 컴퓨터가 이해하기 쉬운 형식 -> 구문 트리(syntax tree) ex. x=1, y=2, 3*(x+y) 2. 의미해석 - 로컬 변수 / 글로벌 변수 구별 - 변수 선언 및 참조 구별 - 변수, 식 타입 확인 (형 변환) - 변수 초기화 확인 - 리턴값 유효성 확인 3. 중간표현 생성 - 여러 종류의 언어나 CPU에 대응하는 컴파일러의 경우 중간표현을 가진다. - 리눅스 GCC -> RTL(Register Transfer Language) - 소스코드 해석에서 중간표현까지의 과정을 컴파일러의 프런트-엔.. 2015. 12. 31. [컴파일러 구조와 원리] - 컴파일의 과정 리눅스의 실행파일 – ELF(executable and linking format) 컴파일의 과정 PreProcess - 헤더파일을 가져와 내부 매크로를 전개. Pre(전의) Process(처리) 컴파일 전 처리. - #include , #define 처리 Compile - 어셈블리 언어 (1) (assembly language) 소스코드 출력 - ‘.s’ 확장자 Assemble - 어셈블러(assembler)에 의해 기계어로 변환하는 과정 - 어셈블러의 출력은 오브젝트 파일(Object file) ‘o’ 확장자. Link - 최종 변환 과정. - 라이브러리는 이 단계에서 결합된다. (1) 기계어를 인간이 알기 쉽도록 변환한 텍스트 언어 2015. 12. 31. 이전 1 2 다음