오늘 할 일
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의 줄임말.
dany-it.tistory.com/209