컴파일러

크로스 컴파일러에 대한 설명으로 올바른 것은 무엇인가?

  1. A두 개의 프로그래밍 언어를 하나의 새로운 언어로 섞는 컴파일러
  2. B실행되는 컴퓨터와는 다른 CPU용 기계어를 생성하는 컴파일러
  3. C여러 컴파일러의 출력을 비교해 가장 빠른 것을 고르는 도구
정답과 해설 보기

정답: B. 실행되는 컴퓨터와는 다른 CPU용 기계어를 생성하는 컴파일러

크로스 컴파일러는 예를 들어 x86 PC 위에서 동작하면서 Arm이나 RISC-V 마이크로컨트롤러용 기계어를 생성하는 컴파일러입니다. 임베디드 기기처럼 대상 기기에서 컴파일러를 돌리기에는 성능이나 메모리가 부족한 경우에 꼭 필요합니다. 생성한 기계어는 대상 기기에 써 넣거나 그 기기를 모사하는 에뮬레이터에서 실행해 확인합니다. 언어를 섞거나 여러 컴파일러의 결과를 비교하는 도구가 아닙니다.

  • A. 언어를 섞는 컴파일러가 아닙니다.
  • B. 올바릅니다. 다른 종류의 CPU용 기계어를 생성합니다.
  • C. 결과를 비교하는 도구가 아닙니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. 최적화를 적용해 컴파일한 프로그램을 디버거로 조사하면 일부 변수의 값이 "표시할 수 없음"으로 나오는 경우가 있다. 주된 이유는 무엇인가?
  2. 위의 함수에 상수 전파·상수 폴딩·불필요한 코드 제거를 충분히 적용했을 때, 함수가 반환하는 값과 남는 코드로 올바른 것은 무엇인가?
  3. 반복 횟수가 100회인 루프를 본체를 4번 분량 나열하는 루프 전개로 바꿔 쓰면, 횟수 판정과 분기는 몇 번이 되는가? (100은 4로 나누어떨어진다고 가정한다)
  4. C 언어 프로그램에서 실행 파일이 만들어지기까지의 일반적인 흐름으로 올바른 것은 무엇인가?
  5. 생성한 기계어의 짧은 나열을 작은 창으로 보면서, 불필요한 명령의 조합을 더 좋은 명령으로 대체하는 최적화를 무엇이라고 하는가?

이 분야의 비교