지난주 gcc 스터디 정리

이수연 2008.11.27 14:59 조회 수 : 12451 추천:7


지난주 스터디한 내용은 대략 다음과 같습니다.

1. gcc 컴파일 전체 과정

source code -> generic -> gimple -> rtl -> machine language

컴파일 중간 단계의 코드들을 살펴볼 수 있는 gcc 옵션으로 -fdump-tree-all 등과
어셈파일을 생성해 주는 -S 옵션을 주어서 간단한 테스트 코드를 직접 작성해 보면 이해가
빠를듯 합니다.

나머지 gcc 옵션은 gcc 소스에 포함되어 있는 문서를 보거나 첨부된 complete reference gcc

문서를 보시면 될 듯합니다.

2. 최적화
GCC internal 문서의 10장과 11장에 해당하는 GIMPLE 트리의 최적화와 loop 최적화를
공부했는데 어렵군요... 누가 강의좀 해주시면 좋겠네여... ㅇㅁㅇ;;;

3. 공유 라이브러리와 실행파일 포맷
리눅스에서 실행파일을 실행하는 과정을 잠시 논의했던 것 같습니다. 더불어 .a 라이브러리와
.so 라이브러리에 대한 차이도 얘기를 하며 gcc 옵션중 -static 옵션을 준경우와 그렇지 않은경
우의 실행에서의 차이점을 얘기했습니다.

예전 박은병님께서 올리신 질문을 참조하면 좋을것 같습니다.

http://www.iamroot.org/bbs/view.php?id=qna&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=35

4. 소스분석

main() -> toplev_main() -> general_init() -> hex_init()
                                                                      init_gcc()

소스는 얼마 나가지 못했군요...

main함수에서는 단순히 toplev_main 함수를 호출하고 끝나네여

toplev_main 함수에서는 전체과정을 수행하고 리턴하는 코드까지 대략 함수 3-4개만

달랑있는데  대략 앞으로 1년여를 이 함수 3개를 분석하는데 써야한다는 말이군여 ㅡ.ㅡ;;;;;

init_gcc 함수에서는 먼저 프로그램 이름 ( "gcc" 가 돼겠네여 ) 을 따로 저장하는거 같은데

왜 쓸데없이 저장하는지는 모르겠네여...

소스에 써있는 16진 문자 0-9 , a-f 를 빠르게 변환하기 위해 hex_init() 함수에서는

_hex_value[] 테이블을 만드네요

init_gcc() 함수에서는 페이지를 할당 받은후 /dev/zero 를 통해서 페이지를 비우는 부분까지

분석을 하고 끝났네요.. 이번주는 이부분 부터 분석을 하면 될듯 합니다.

지난주 스터디에서 앞으로는 소스분석과 알고리즘 이해를 위한 문서분석을 함께 진행하기로

했습니다. 두번째 첨부하는 문서는 백창우 님께서 추천하신 호랑이책입니다. C 버젼은 찾기가

힘드네여.. 도서관에서 C 버젼과 java 버젼을 비교해 봤는데 대략적인 내용은 동일한듯 해서

java 버젼으로 봐도 크게 무리는 없을듯 합니다.
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 컴파일러 및 가상머신 스터디 관련 Q&A 게시판 입니다. woos 2016.04.09 278
68 LLVM 최적화 패치 제출까지의 순서 정리 marcII 2024.03.19 101
67 simplify 에 대해 ChatGPT에게 물어봤습니다. [7] marcII 2023.03.19 684
66 혹시 이 책 보신분 계신지 궁금합니다. [1] marc 2023.02.22 314
65 [컴파일러] 170721 스터디 내용 pororo 2017.07.23 386
64 [컴파일러/VM] 170707 스터디 내용 pororo 2017.07.10 154
63 [컴파일러/VM] 170623 오늘 모임은 취소되었습니다. [3] pororo 2017.06.23 172
62 2017년 06/16일 스터디 컴파일러 VM스터디 [1] June 2017.06.16 137
61 [컴파일러/가상머신] 170602 진도 [3] pororo 2017.06.03 152
60 [컴파일러/가상머신] 170526 진도 [4] pororo 2017.05.27 157
59 [컴파일러/가상머신] 2회차 진행내용 공유 [8] spike 2017.05.20 209
58 llvm IR 자이 2017.05.19 1143
57 https://www.slideshare.net/Hybrid0/llvm-28276305 woos 2017.05.19 18826
56 이번 컴파일러 스터디와 관련해서 LLVM에 대해 찾아보았습니다 [1] 자이 2017.05.19 735
55 05/12 컴파일러 스터디 진도 pororo 2017.05.13 182
54 조언 구합니다. 백창우씨 외 많은 선배님들께 [5] 슈민 2016.06.06 869
53 스터디 장소 슈민 2016.04.30 114
52 Compiler (LLVM) 교재 선정 [7] 슈민 2016.04.27 906
51 스터디 공간 정리 [3] Kyoo 2016.04.24 264
50 스터디 교재 관련 의견 취합 [23] 남현우 2016.04.24 1112
XE Login