컴파일러

컴파일러 최적화가 지켜야 하는 기본 조건으로 올바른 것은 무엇인가?

  1. A원래 프로그램보다 반드시 명령 수를 절반 이하로 줄일 것
  2. B빨라진다면 프로그램의 출력이 다소 달라져도 된다는 것
  3. C올바른 프로그램에 대해 외부에서 보이는 결과를 바꾸지 않을 것
정답과 해설 보기

정답: C. 올바른 프로그램에 대해 외부에서 보이는 결과를 바꾸지 않을 것

최적화는 프로그램을 빠르게 하거나 작게 하기 위한 변환이지만, 올바르게 작성된 프로그램의 출력이나 파일 쓰기 등 외부에서 보이는 동작을 바꿔서는 안 됩니다. 이 조건 아래에서 계산 순서를 바꾸거나 불필요한 계산을 삭제합니다. 명령 수를 얼마나 줄일 수 있는지는 경우마다 다르며 절반 이하라는 규칙은 없습니다. 결과가 달라져도 되는 것은 부동소수점의 재배열을 허용하는 등 사용자가 명시적으로 선택한 경우로 한정됩니다.

  • A. 줄일 수 있는 양에 규칙은 없습니다.
  • B. 속도를 위해 결과를 바꿔서는 안 됩니다.
  • C. 올바릅니다. 외부에서 보이는 결과를 바꾸지 않는 것이 대원칙입니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. 코드 생성 단계의 하나인 명령 선택(인스트럭션 셀렉션)에 대한 설명으로 올바른 것은 무엇인가?
  2. 크로스 컴파일러에 대한 설명으로 올바른 것은 무엇인가?
  3. 최적화를 적용해 컴파일한 프로그램을 디버거로 조사하면 일부 변수의 값이 "표시할 수 없음"으로 나오는 경우가 있다. 주된 이유는 무엇인가?
  4. 위의 함수에 상수 전파·상수 폴딩·불필요한 코드 제거를 충분히 적용했을 때, 함수가 반환하는 값과 남는 코드로 올바른 것은 무엇인가?
  5. 반복 횟수가 100회인 루프를 본체를 4번 분량 나열하는 루프 전개로 바꿔 쓰면, 횟수 판정과 분기는 몇 번이 되는가? (100은 4로 나누어떨어진다고 가정한다)

이 분야의 비교