>  기사  >  백엔드 개발  >  C언어는 어떤 컴파일 언어인가요?

C언어는 어떤 컴파일 언어인가요?

王林
王林원래의
2019-11-01 16:47:474476검색

C언어는 어떤 컴파일 언어인가요?

컴파일 모드란 무엇인가요?

컴파일 모드란 프로그램 코드와 데이터를 메모리에 배치하는 방법, 스택을 할당하는 방법, 점유된 메모리 크기를 확인하고 이에 액세스하는 방법을 말합니다. 메모리 모드(컴파일 모드)를 지정하면 언어가 지정됩니다. 컴파일러는 미리 선택된 좋은 메모리 모델을 따르고 프로그램을 구성합니다.

C 언어는 6가지 컴파일 모드를 제공합니다. 이 6가지 모드는 Tiny, Small, Medium, Compact, Large 및 Giant(Huge)입니다. 사용자는 자신의 프로그램 크기와 필요에 따라 선택할 수 있습니다.

C 언어 컴파일 모드 - 마이크로 모드(Tiny) - 포인터 근처

마이크로 모드에서는 프로그램의 데이터와 코드가 동일한 섹션에 배치됩니다. 즉, 64KB를 초과하지 않습니다. 마이크로 모드에서는 코드 세그먼트, 스택 세그먼트, 데이터 세그먼트의 세그먼트 주소가 모두 동일합니다. 즉, CS=DS=SS=ES입니다.

C 언어 컴파일 모드 - 소형 모드(Small)

소형 모드에서는 프로그램의 코드가 64KB 코드 세그먼트에 배치되고 데이터가 64KB 데이터 세그먼트에 배치됩니다. 소형 모드에서는 스택 세그먼트, 추가 데이터 세그먼트 및 데이터 세그먼트가 모두 하나로 결합됩니다. 즉, 포인터는 모두 소형 모드에서 컴파일됩니다. .

C 언어 컴파일 모드 - Medium(Medium)

Medium 모드에서는 모든 데이터가 64KB 데이터 세그먼트에 배치되므로 해당 데이터 세그먼트에서는 Near가 사용되며 코드 크기는 64KB보다 클 수 있습니다(허용됨). 1MB에 도달), 따라서 다른 코드 세그먼트(원거리 원격 포인터)에서 사용할 수 있습니다. 다양한 소스 파일의 코드 모듈은 다양한 코드 섹션에 배치됩니다.

C 언어 컴파일 모드 - 컴팩트 모드(Compact)

컴팩트 모드에서는 데이터 양이 64KB를 초과하면 여러 데이터 세그먼트에 배치할 수 있으며 데이터 세그먼트 내의 포인터는 (far)입니다. 코드의 양은 64KB를 넘지 않고 한 세그먼트 내에 있으므로 코드 세그먼트 내의 포인터가 가깝습니다. 그러나 이 모드에서는 정적 데이터가 여전히 64KB를 초과할 수 없으며 힙은 원거리 포인터를 사용하여 액세스합니다. 코드, 정적 데이터, 스택 및 힙에는 각각 고유한 세그먼트가 있습니다. 먼 더미만 있고 가까운 더미는 없습니다.

C 언어 컴파일 모드 - 대형 모드(Large)

대형 모드에서는 코드와 데이터 모두 원거리 포인터를 사용하며 둘 다 1MB에 도달할 수 있습니다. 정적 데이터, 스택, 힙은 컴팩트 모드와 동일하고, 코드는 미디엄 모드와 동일합니다. 정적 데이터는 컴팩트 모드와 동일하게 유지되며 64KB를 초과할 수 없습니다.

C 언어 컴파일 모드 - 거대 모드(Huge)

대형 모드에서는 코드 세그먼트와 데이터 세그먼트 모두 원거리 포인터를 사용합니다. 코드는 서로 다른 코드 세그먼트에 분산되고 데이터도 서로 다른 데이터 세그먼트에 분산됩니다. 서로 다른 소스 프로그램에는 하나의 큰 스택만 있습니다. 그리고 정적 데이터 크기는 64KB를 초과할 수 있습니다.

추천 튜토리얼: C 언어 튜토리얼

위 내용은 C언어는 어떤 컴파일 언어인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.