컴파일러

기본 블록에 대한 설명으로 올바른 것은?

  1. A중간에 분기의 출입이 없고 반드시 이어서 실행되는 명령의 나열
  2. B하나의 함수 안에 포함된 모든 명령을 하나로 묶은 것
  3. C루프의 본체를 여러 번 분량 나열하여 반복 횟수를 줄인 것
정답과 해설 보기

정답: A. 중간에 분기의 출입이 없고 반드시 이어서 실행되는 명령의 나열

기본 블록은 입구가 맨 앞뿐이고 출구가 맨 끝뿐인 명령의 나열로, 일단 실행이 시작되면 도중에 빠져나가거나 도중에 들어오는 일이 없습니다. 분기의 목적지가 되는 명령이나 분기 명령의 바로 뒤에서 구분하여 만듭니다. 블록 안에서는 실행 순서가 정해져 있으므로 국소적인 최적화가 쉽고, 블록을 노드로 한 제어 흐름 그래프로 전체의 흐름을 나타냅니다. 함수 전체는 보통 여러 개의 기본 블록으로 이루어지며, 루프 본체를 나열하는 것은 루프 전개입니다.

  • A. 올바릅니다. 입구는 맨 앞, 출구는 맨 끝뿐인 명령의 나열입니다.
  • B. 함수 전체는 보통 여러 개의 기본 블록으로 이루어집니다.
  • C. 루프 본체를 나열하는 것은 루프 전개입니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. 제어 흐름 그래프에서 노드와 화살표가 나타내는 것의 조합으로 올바른 것은?
  2. SSA 형식 중간 표현의 특징으로 올바른 것은?
  3. 위의 코드를 SSA 형식으로 만들면 if문 뒤에 「x3 = φ(x1, x2)」와 같은 식이 들어간다. 이 φ 함수의 역할로 올바른 것은?
  4. 컴파일러의 상수 폴딩의 예로 올바른 것은?
  5. 위의 코드에 상수 전파와 상수 폴딩을 반복해서 적용하면 최종적으로 어떤 코드가 되는가?

이 분야의 비교