컴파일 과정을 자세하게 알려면 어떤 책을 보면 되나요
글쓴이: rlawhdgus34 / 작성시간: 금, 2016/03/25 - 3:55오후
컴파일에 대해 잘 몰라서
구글에 컴파일 과정이라고 검색을 하면 보통 전처리과정 -> 어셈블리로 변환 -> 오브젝트파일 생성 -> 링크 -> 실행파일
이런 과정이라고 설명이 되어있는데요.
정확히 무엇을 하는지 왜하는지 궁금해서 검색을 해보면 제가 원하는 만큼의 디테일한 설명은 잘 못찾겠더라고여.
그래서 책을 찾아보자 하고 도서관에서 컴파일러 책을 보면 컴파일러 책에는 저런 컴파일과정보다는 저 과정보다 더 자세한? 문자열을 분석해서 어떻게 어떻게 하고 그런 내용이 있더라고여.
저런 과정이 어떤 상위주제에 속하는지를 알아야 키워드를 알고 책을 찾던지 할텐데..
무슨 키워드를 사용해야 전처리과정 -> 어셈블리로 변환 -> 오브젝트파일 생성 -> 링크 -> 실행파일 이 과정에 대한 상세한 설명을 알 수 있나요??
Forums:
Embedded Recipes에 한표요 ~
Embedded Recipes에 한표요 ~
ㅠ
교보문고나.. 학교 도서관에도 소장되어 있지 않네요 책이..
보니까 예약판매?를 하는 형식인듯요.. 그래서 밑에 어떤분이 달아주신 computer systems book을 참고삼아 공부하기로 하였습니다
감사합니다~
컴파일러론이요(...)
컴파일러 책을 보셨다니 대충은 아시겠지만, 컴파일러는 크게 두 파트로 나뉩니다.
1. 소스를 읽고 그 문법적 구조와 의미를 파악하는 frontend
2. 파악된 소스를 타겟 언어(기계어 등)으로 변환하는 backend
아무 컴파일러론 책이나 집어 들면 대체로 이 모든 걸 다룹니다만, 선수과목이라고 할 만한 분야들은 있습니다.
1) frontend를 이해하기 위해서는 일단 오토마타 이론(Automata theory)을 알아야 합니다. 뭐 컴파일러가 이쪽 분야 지식을 그렇게 많이 요구하지는 않기 때문에, 컴파일러론 책에서 필요한 만큼 설명해 주는 경우도 적잖이 있습니다. 그 밖에도 언어에 따라 타입 이론(Type theory)을 알아야 할 수도 있고, OOP 언어 컴파일러를 알고 싶으시다면 당연히 OOP 자체에 대해서도 잘 아셔야겠죠.
2) backend 중에서도 기계어로 된 실행파일을 직접 생성하는 컴파일러에 대해서 공부할 경우, 기본적으로 CPU 아키텍처 및 운영체제에 대한 지식을 바탕으로 깔아야 합니다.
사실 컴파일러론은 소프트웨어와 하드웨어 분야의 접점으로써 상당히 많은 컴퓨터공학 분야들이 융합되어 있는 분야입니다. 파면 팔수록 끝이 없을거에요.
...
컴파일러 자체하고는 큰 상관이 없습니다만, "어셈블리 변환, 오브젝트 파일 생성, 링크" 이런 단계에 관심이 있으시다면 이 책을 추천합니다.
Computer Systems: A Programmer's Perspective
http://csapp.cs.cmu.edu/
사실 책 자체는 컴파일러에 대한 책이 아니라, CPU가 어떻게 생겨먹었고 프로그램을 만들어서 실행시키면 컴퓨터 안에서 무슨 일이 일어나는가에 대해 가르치고 있습니다. (독자의 수준에 따라서 뻔한 이야기가 많을 수도 있습니다.)
감사합니당
제가 원하는 형태의 정보가 잘 서술되어 있는 책같습니다 ㅎㅎ
감사합니당!!!!
댓글 달기