컴파일러

C 언어 프로그램에서 실행 파일이 만들어지기까지의 일반적인 흐름으로 올바른 것은 무엇인가?

  1. A링크 → 컴파일 → 어셈블
  2. B어셈블 → 링크 → 컴파일
  3. C컴파일 → 어셈블 → 링크
정답과 해설 보기

정답: C. 컴파일 → 어셈블 → 링크

C 언어 소스 파일은 먼저 컴파일러에서 기계어에 가까운 어셈블리 언어(또는 직접 오브젝트 파일)로 변환되고, 어셈블러에서 기계어 오브젝트 파일이 됩니다. 마지막으로 링커가 여러 오브젝트 파일과 라이브러리를 하나로 모으고 함수와 변수의 주소를 정해 실행 파일을 만듭니다. 오브젝트 파일 단계에서는 다른 파일에 있는 함수의 주소가 아직 정해져 있지 않습니다. 다른 순서로는 앞 단계의 출력이 다음 단계의 입력이 되지 않습니다.

  • A. 링크는 마지막 단계입니다.
  • B. 어셈블 전에 컴파일이 필요합니다.
  • C. 올바릅니다. 컴파일, 어셈블, 링크의 순서입니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. 생성한 기계어의 짧은 나열을 작은 창으로 보면서, 불필요한 명령의 조합을 더 좋은 명령으로 대체하는 최적화를 무엇이라고 하는가?
  2. 위의 코드에서 sq를 인라인 전개한 뒤 이어서 효과를 내는 최적화와 그 결과로 올바른 것은 무엇인가?
  3. 소프트웨어 파이프라이닝에 대한 설명으로 올바른 것은 무엇인가?
  4. 컴파일러가 부동소수점 수의 덧셈 (a + b) + c를 엄격한 설정에서는 a + (b + c)로 마음대로 재배열하지 않는 이유로 올바른 것은 무엇인가?
  5. 컴파일러의 자동 벡터화에서 사용되는 명령의 종류로 올바른 것은 무엇인가?

이 분야의 비교