컴파일러

불필요한 코드의 삭제(데드 코드 제거)로 제거되는 것으로 올바른 것은?

  1. A프로그램 안에서 가장 자주 실행되는 가장 중요한 부분의 코드
  2. B실행될 일이 없는 부분이나 결과가 어디에도 사용되지 않는 계산
  3. C화면에 결과를 표시하기 위한 출력 명령
정답과 해설 보기

정답: B. 실행될 일이 없는 부분이나 결과가 어디에도 사용되지 않는 계산

불필요한 코드의 삭제는 조건이 항상 거짓이라 결코 실행되지 않는 분기의 내용이나, 계산해도 결과가 어디에도 사용되지 않는 대입 등을 제거하는 최적화입니다. 상수 전파나 상수 폴딩 뒤에는 사용되지 않게 된 대입이 많이 생기므로 함께 사용됩니다. 자주 실행되는 부분은 빠르게 해야 할 중요한 부분이므로 삭제해서는 안 됩니다. 화면 출력처럼 외부에서 보이는 효과가 있는 명령은 프로그램 결과의 일부이므로 삭제되지 않습니다.

  • A. 자주 실행되는 부분은 삭제해서는 안 됩니다.
  • B. 올바릅니다. 실행되지 않는 부분이나 사용되지 않는 계산을 제거합니다.
  • C. 외부에 보이는 효과가 있는 명령은 삭제되지 않습니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. 함수 인라인 전개의 장점과 단점의 조합으로 올바른 것은?
  2. 루프 전개(루프 언롤링)의 주된 효과로 올바른 것은?
  3. 위의 루프에서 루프 불변식의 이동(루프 밖으로의 이동) 대상이 되는 계산은? (x, y는 루프 안에서 변경되지 않는다고 한다)
  4. 위의 루프에서 첨자 계산 i * 4에 강도 감소를 적용했을 때의 변환으로 올바른 것은?
  5. 위의 루프를 SIMD 명령으로 벡터화하기 어려운 주된 이유는?

이 분야의 비교