컴파일러

링크 시 최적화(LTO)로 가능해지는 최적화로 가장 적절한 것은?

  1. A서로 다른 파일의 함수끼리도 인라인 전개 등을 할 수 있다
  2. B하나의 함수 안의 루프만 전개할 수 있게 된다
  3. C링크 처리가 불필요해져 오브젝트 파일을 그대로 실행할 수 있다
정답과 해설 보기

정답: A. 서로 다른 파일의 함수끼리도 인라인 전개 등을 할 수 있다

일반적인 컴파일에서는 소스 파일을 하나씩 따로 기계어로 변환하므로 다른 파일에 있는 함수의 내용이 보이지 않아, 파일을 넘나드는 인라인 전개나 상수 전파를 할 수 없습니다. LTO에서는 각 파일을 중간 표현인 채로 남겨 두고, 링크할 때 프로그램 전체를 한꺼번에 최적화합니다. 이로써 파일을 넘나드는 인라인 전개나 어디에서도 호출되지 않는 함수의 삭제 등이 가능해집니다. 하나의 함수 안의 루프 전개는 일반적인 컴파일에서도 할 수 있습니다.

  • A. 올바릅니다. 파일을 넘나드는 최적화를 할 수 있게 됩니다.
  • B. 함수 안의 루프 전개는 일반적인 컴파일에서도 할 수 있습니다.
  • C. 링크는 여전히 필요합니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. C 언어에서 부호 있는 정수의 오버플로는 미정의 동작이다. 이 전제에서 위의 함수를 최적화하는 컴파일러가 생성할 수 있는 코드로 올바른 것은?
  2. 프로그램의 오류 중 컴파일 시점에 발견할 수 있는 것은?
  3. 정적 타입을 가진 언어에서 컴파일러가 타입 검사를 하는 주된 이점은?
  4. 어휘 분석에서 토큰을 구별하는 규칙을 나타내는 데 자주 사용되는 것은?
  5. 많은 프로그래밍 언어의 문법을 나타내는 데 사용되며 구문 분석의 기초가 되는 문법의 종류는?

이 분야의 비교