2.3.10. 타겟 프로세서 또는 아키텍처 지정

RVCT에서는 ARMv4 이후의 모든 ARM 아키텍처를 지원합니다. ARMv4 이전의 모든 아키텍처 이름은 현재 사용되지 않으며 더 이상 지원되지 않습니다.

RVCT에서는 ARMv7-A(응용 프로그램 프로파일)와 ARMv7-M(Thumb-2 전용 마이크로컨트롤러 프로파일), 이 두 ARMv7 아키텍처 프로파일도 지원합니다.

RVCT에서 정수, 고정 소수점 및 단정밀도 부동 소수점 SIMD 연산을 지원하는 ARM Advanced SIMD Extension(NEON™ 기술이라고도 함)을 지원합니다. NEON은 프로세서의 일부로 구현되지만 자체 실행 파이프라인이 있으며 ARM 레지스터 뱅크와는 별개의 레지스터 뱅크가 있습니다. NEON 명령어는 ARM과 Thumb-2 모두에서 사용할 수 있습니다.

NEON 명령어를 생성하려면 명령 행에 선택적인 NEON 기술이 포함된 Cortex™ 프로세서를 지원해야 합니다. --cpu Cortex-A8을 예로 들 수 있습니다.

이 장에 설명된 옵션을 지정하면 컴파일에 타겟 프로세서나 아케텍처 특성을 지정할 수 있습니다. 여기에 컴파일러에서 선택한 프로세서나 아키텍처 전용 추가 기능을 이용할 수 있습니다.

Note

타겟 프로세서를 지정하면 코드가 다른 ARM 프로세서와 호환되지 않을 수 있습니다. 예를 들어 컴파일된 코드에 ARMv6 전용 명령어가 있는 경우 아키텍처 ARMv6에 대해 컴파일된 코드는 ARM920T 프로세서에서 실행되지 않을 수 있습니다.

다음 중 하나를 지정하여 시작할 때 컴파일러가 구성되는 방법을 지정할 수 있습니다.

--arm

ARM 명령어 세트를 타겟으로 하려는 경우. 이것이 기본값입니다.

--thumb

Thumb 명령어 세트를 타겟으로 하려는 경우

이 옵션에 대한 자세한 내용은 명령어 세트 타겟 작성을 참조하십시오.

프로세서 및 아키텍처 옵션에는 다음과 같은 일반적인 사항이 적용됩니다.

다음 옵션을 지정할 수 있습니다.

--cpu list

--cpu name 옵션도 지정할 수 있는 지원되는 아키텍처와 프로세서 이름을 나열합니다.

--cpu name

특정 ARM 프로세서 또는 아키텍처의 코드를 생성합니다.

name이 프로세서인 경우

  • 이름은 ARM 데이터시트(예: ARM7TDMI, ARM1176JZ-S, MPCore)에 표시되는 것과 똑같이 입력해야 합니다. 와일드카드 문자는 허용되지 않습니다.

  • 프로세서를 선택하면 적절한 아키텍처 부동 소수점 단위(FPU) 및 메모리 구성이 선택됩니다.

  • 일부 --cpu 지정에 --fpu 선택이 포함됩니다. 예를 들어 --arm 옵션을 지정하여 컴파일하면 --cpu ARM1136JF-S--fpu vfpv2가 포함됩니다.

    명령 행의 명시적 FPU(--fpu로 설정)는 암시적 FPU 보다 우선합니다.

  • --fpu 옵션 및 --cpu 옵션을 지정하지 않은 경우 --fpu softvfp가 사용됩니다.

name이 아키텍처이면 다음 중 하나여야 합니다.

4

long 곱하기는 있지만 Thumb은 없는 ARMv4

4T

long 곱하기와 Thumb이 있는 ARMv4

5T

long 곱하기, Thumb 및 인터워킹이 있는 ARMv5

5TE

long 곱하기, Thumb, 인터워킹, DSP 곱하기 및 더블워드 명령어가 있는 ARMv5

5TEJ

long 곱하기, Thumb, 인터워킹, DSP 곱하기, 더블워드 명령어 및 Jazelle® 확장이 있는 ARMv5

6

long 곱하기, Thumb, 인터워킹, DSP 곱하기, 더블워드 명령어, 정렬되지 않은 혼합 엔디안 지원, Jazelle 및 미디어 확장이 있는 ARMv6

6K

SMP 확장이 있는 ARMv6

6T2

Thumb-2가 있는 ARMv6

6Z

보안 확장이 있는 ARMv6

7-A

ARM, Thumb, Thumb-2 및 Thumb-2EE 명령어 세트와 같이 가상(MMU 기반) 메모리 시스템을 지원하는 ARMv7 응용 프로그램 프로파일

7-M

Thumb-2만 있는 ARMv7 마이크로컨트롤러 프로파일

--fpu list

--fpu name 옵션으로 사용할 수 있는 지원되는 FPU 아키텍처와 이름을 나열합니다.

향후 제공되지 않는 옵션은 표시되지 않습니다.

--fpu name

타겟 FPU 아키텍처를 결정합니다.

이 옵션을 지정하면 명령 행에 표시되는 암시적 FPU 옵션(예: --cpu 옵션을 지정하는 경우) 보다 우선합니다.

name에 대해 유효한 옵션은 다음과 같습니다.

none

부동 소수점 옵션을 선택하지 않습니다. 부동 소수점 코드를 사용하지 않습니다. 코드에 부동이 있는 경우 오류가 생성됩니다.

vfpv3

VFPv3 아키텍처를 준수하는 하드웨어 벡터 부동 소수점 단위를 선택합니다.

vfpv2

VFPv2 아키텍처를 준수하는 하드웨어 벡터 부동 소수점 단위를 선택합니다. FPU가 있는 CPU를 선택하거나 --fpu vfp를 지정하는 경우 이것이 기본값입니다.

Note

명령 행에 armcc --thumb --fpu vfpv2를 입력하면 컴파일러에서 Thumb 명령어 세트를 사용하는 코드를 가능한 많이 컴파일하지만 하드 부동 소수점에 쉽게 영향을 받는 함수는 ARM 코드로 컴파일됩니다. 이 경우 사전 정의된 __thumb 값은 유효하지 않습니다.

ARM C 코드에 대해 --arm 옵션과 같이 vfp 또는 vfpv2를 지정하면 __softfp 키워드를 사용하여 소프트웨어 부동 소수점 링키지를 사용할 수 있도록 인터워킹 ARM 코드를 컴파일해야 합니다. 자세한 내용은 함수 키워드에서 __softfp의 설명을 참조하십시오.

softvfp

소프트웨어 부동 소수점 링키지를 선택합니다. --fpu 옵션을 지정하지 않거나 FPU가 없는 CPU를 선택하는 경우 이것이 기본값입니다.

이전 릴리스의 RVCT에서 --fpu softvfp 및 암시적 VFP 하드웨어가 있는 CPU를 지정한 경우 링커가 VFP 명령어를 사용하여 소프트웨어 부동 소수점 호출을 구현하는 라이브러리를 선택합니다. 더 이상은 적용되지 않습니다. 이 레거시 동작이 필요한 경우 --fpu softvfp+vfp를 사용하십시오.

softvfp+vfpv2

벡터 부동 소수점(VFP) 명령어를 사용하는 소프트웨어 부동 소수점 링키지로 부동 소수점 라이브러리를 선택합니다. VFP 단위를 구현하는 시스템에서 Thumb 코드와 ARM 코드가 인터워킹하는 경우 이 옵션을 선택합니다.

이 옵션을 선택하면 다음 작업이 수행됩니다.

  • --thumb을 지정하여 컴파일하면 VFP 명령어를 사용하는 부동 소수점 라이브러리와 링크되는 것을 제외하고 --fpu softvfp와 비슷한 방식으로 실행됩니다.

  • --arm을 지정하여 컴파일하면 모든 함수에 소프트웨어 부동 소수점 링키지가 제공되는 것을 제외하고 --fpu vfpv2와 비슷한 방식으로 실행합니다. 즉, 함수에서 부동 소수점 인수를 전달하고 반환하면 --fpu softvfp의 경우와 같은 방식의 결과가 표시되지만 내부적으로 VFP 명령어를 사용합니다.

Note

C 코드에 대해 --arm 옵션 또는 --thumb 옵션으로 softvfp+vfpv2를 지정하면 소프트웨어 부동 소수점 링키지를 사용할 수 있도록 인터워킹 부동 소수점 코드를 컴파일해야 합니다.

softvfp+vfpv3

VFPv3 명령어를 사용하는 소프트웨어 부동 소수점 링키지로 부동 소수점 라이브러리를 선택합니다. VFPv3 단위를 구현하는 시스템에서 Thumb 코드와 ARM 코드가 인터워킹하는 경우 이 옵션을 선택합니다.

FPU 아키텍처의 전체 목록을 가져오려면 --fpu list 옵션을 지정하십시오.

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0205GK
Non-Confidential