20/09/02 TL. 컴파일러 Front End - Back End 구성 요소
오늘 할 일
NLP 실습 강의 코드 분석 -> 4.3
우분투 설치
gcc 조사
강의 수강 -> 기계학습, 컴퓨터 네트워크, 컴퓨터 그래픽스, 컴파일러 개론
내일 할 일
NLP 실습 강의 코드 분석
gcc 설치 + 과제 제출
강의 수강 -> 컴파일러 개론, 선형대수, 컴퓨터 그래픽스
매일 할 일
매일 데이터 수집
매일 태깅
태깅 피드백
매일 독서 - 더블린 사람들
매일 영단어
어셈블리어 : 기호를 기계어로 전환하는 번역 sw
ex) add -> 0010
그러나, cpu를 바꾸면 다시 짜야 함.
고급언어는 기계마다 다르지 않고, 영어와 비슷. 컴파일러라는 번역 sw를 이용해 기계어를 생성.
고급 언어 -> 컴파일러 -> 기계어
컴파일러 : 한 언어로 쓰여진 프로그램을 다른 언어로 된 의미가 같은 프로그램으로 번역해주는 프로그램.
source program -> compiler -> target program
즉, 꼭 기계어로만 번역되는 건 아니다.
인터프리터 : 한 줄씩 읽어서 실행
컴파일러 : 다 외워서 실행
컴파일러 기술 응용
-컴파일러, IDE, find-bug, 품질검사, 바이너리 분석, 디컴파일러, 최적화 병렬화
프로그램 처리 과정
preprocessing (ex. #include 등 제거해서 순수 c를 생성) -> compiler가 source를 assembly language로 전환.
컴파일러 각 단계
Front End(전반부)
어휘분석, 구문분석, 의미분석, 중간코드 생성
Back End(후반부)
코드최적화, 코드 생성
Lexical analysis 어휘 분석
-source program을 읽어서 문법의 최소 단위인 token을 생성.
token : 키워드, 연산자, 식별자, 상수 ...
Syntax analysis 구문 분석
-Token을 읽어 오류를 검색하고 올바른 문장에 대한 구문구조를 만든다. -> 트리 형태로.
ex.
A := B + 3;
:=
A +
B 3
Semantic analysis 의미 분석
-Type checking 형 검사
-각 연산자가 원시 언어의 정의에 맞는 피연산자를 가지는가를 검사
Intermediate code generation 중간 코드 생성
-구문구조를 이용하여 코드 생성 또는 문법 규칙에 의해 생성
ex. A := B + 3
load 1 2
loc 3
add
str 1 1
Code optimization 코드 최적화
-코드 분석 후 시간, 공간 등 최적화
-선택적 단계(그러나 공간적, 시간적 효율화를 위해 필수적이라고 할 수도)
Code generation 코드 생성
-목적 코드 생성
-assemble lang, machine code
gcc 컴파일러 : GNU Compiler Collection의 줄임말.
리눅스 gcc 컴파일러란?
이번 포스팅은 리눅스 gcc 컴파일러에 대해 하겠습니다. gcc란 GNU 컴파일러 모음(GNU Compiler Collection, 줄여서 GCC)는 GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러입니다. 많은 리눅��
dany-it.tistory.com