GCC는 C를 어떻게 기계어로 짜깁기할까? - CS:APP 3.2 요약과 인사이트
·
CS:APP
사람이 작성한 고급 언어(C)의 소스코드를 GCC C 컴파일러는 어셈블리 코드 로 만들고, 어셈블러와 링커를 통해 기계어 코드를 생성한다.고급 언어의 높은 수준의 추상화로 인하여, 밑단에서 일어나는 동작들을 알 수 없다.그래서 개발자들은 어셈블리어를 이해하고 활용해야하는데, 그 이유는 다음과 같다최적화 성능 확인 및 튜닝 : 작성한 코드의 컴파일러를 통해 어셈블리 코드를 확인하고, 컴파일러의 성능 및 소스코드의 효율성 분석 및 소스코드의 변경을 통한 성능 극대화보안 취약점 분석 : 런타임 제어 정보 저장방식 약점을 활용한 버퍼 오버플로우 같은 공격에 대한 보호3.2 프로그램의 인코딩linux> gcc -Og -o p p1.c p2.c코드 설명-Og : 최적화 수준 지정 (학습목적 상 더 높은 최적화 적용..