| |||
| Home > ARM 컴파일러 사용 > armcc 명령 구문 > 타겟 프로세서 또는 아키텍처 지정 | |||
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을 예로 들 수 있습니다.
이 장에 설명된 옵션을 지정하면 컴파일에 타겟 프로세서나 아케텍처 특성을 지정할 수 있습니다. 여기에 컴파일러에서 선택한 프로세서나 아키텍처 전용 추가 기능을 이용할 수 있습니다.
타겟 프로세서를 지정하면 코드가 다른 ARM 프로세서와 호환되지 않을 수 있습니다. 예를 들어 컴파일된 코드에 ARMv6 전용 명령어가 있는 경우 아키텍처 ARMv6에 대해 컴파일된 코드는 ARM920T 프로세서에서 실행되지 않을 수 있습니다.
다음 중 하나를 지정하여 시작할 때 컴파일러가 구성되는 방법을 지정할 수 있습니다.
--armARM 명령어 세트를 타겟으로 하려는 경우. 이것이 기본값입니다.
--thumbThumb 명령어 세트를 타겟으로 하려는 경우
이 옵션에 대한 자세한 내용은 명령어 세트 타겟 작성을 참조하십시오.
프로세서 및 아키텍처 옵션에는 다음과 같은 일반적인 사항이 적용됩니다.
지원되는 --cpu 값은 모두 현재 ARM 제품 이름이나 아키텍처 버전입니다.
일치하는 별칭이나 와일드카드가 없습니다.
--cpu 옵션에 아키텍처 이름을 지정하면 해당 아키텍처를
지원하는 모든 프로세서에서 실행할 수 있도록 코드가 컴파일됩니다. 예를 들어 --cpu 5TE는 ARM926EJ-S® 또는 ARM10200E®에서 사용할 수 있는 코드를 생성합니다.
--cpu 옵션에 대해 프로세서를 지정하면 컴파일된 코드가
해당 프로세서에 대해 최적화됩니다. 그러면 컴파일러에서 최적의 성능을 위한 특정 보조 프로세서나 명령어 일정을 사용할
수 있습니다.
프로세서나 아키텍처 이름 중 하나에만 --cpu를 사용하십시오.
프로세서와 아키텍처 둘 다에 지정할 수는 없습니다.
--cpu를 지정하지 않은 경우 기본값은 --cpu
ARM7TDMI입니다.
--cpu ARM7TDMI처럼 Thumb 명령어를 지원하는
프로세서를 지정하면 컴파일러에서 Thumb 코드를 생성하지 않습니다. long 곱하기처럼 사용할 프로세서의 기능만
활성화합니다. --thumb 옵션을 지정하여 Thumb 코드를 생성합니다.
ARMv7 마이크로컨트롤러 프로파일, 즉 --cpu Cortex-M3을 지정하면
명령 행에 --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
4long 곱하기는 있지만 Thumb은 없는 ARMv4
4Tlong 곱하기와 Thumb이 있는 ARMv4
5Tlong 곱하기, Thumb 및 인터워킹이 있는 ARMv5
5TElong 곱하기, Thumb, 인터워킹, DSP 곱하기 및 더블워드 명령어가 있는 ARMv5
5TEJlong 곱하기, Thumb, 인터워킹, DSP 곱하기, 더블워드 명령어 및 Jazelle® 확장이 있는 ARMv5
6long 곱하기, Thumb, 인터워킹, DSP 곱하기, 더블워드 명령어, 정렬되지 않은 혼합 엔디안 지원, Jazelle 및 미디어 확장이 있는 ARMv6
6KSMP 확장이 있는 ARMv6
6T2Thumb-2가 있는 ARMv6
6Z보안 확장이 있는 ARMv6
7-AARM, Thumb, Thumb-2 및 Thumb-2EE 명령어 세트와 같이 가상(MMU 기반) 메모리 시스템을 지원하는 ARMv7 응용 프로그램 프로파일
7-MThumb-2만 있는 ARMv7 마이크로컨트롤러 프로파일
--fpu list--fpu 옵션으로
사용할 수 있는 지원되는 FPU 아키텍처와 이름을 나열합니다.name
향후 제공되지 않는 옵션은 표시되지 않습니다.
--fpu name타겟 FPU 아키텍처를 결정합니다.
이 옵션을 지정하면 명령 행에 표시되는 암시적 FPU 옵션(예: --cpu 옵션을
지정하는 경우) 보다 우선합니다.
에 대해 유효한
옵션은 다음과 같습니다.name
none부동 소수점 옵션을 선택하지 않습니다. 부동 소수점 코드를 사용하지 않습니다. 코드에 부동이 있는 경우 오류가 생성됩니다.
vfpv3VFPv3 아키텍처를 준수하는 하드웨어 벡터 부동 소수점 단위를 선택합니다.
vfpv2VFPv2
아키텍처를 준수하는 하드웨어 벡터 부동 소수점 단위를 선택합니다. FPU가 있는 CPU를 선택하거나 --fpu
vfp를
지정하는 경우 이것이 기본값입니다.
명령 행에 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 명령어를 사용합니다.
C 코드에 대해 --arm 옵션 또는 --thumb 옵션으로 softvfp+vfpv2를
지정하면 소프트웨어 부동 소수점 링키지를 사용할 수 있도록 인터워킹 부동 소수점 코드를 컴파일해야 합니다.
softvfp+vfpv3VFPv3 명령어를 사용하는 소프트웨어 부동 소수점 링키지로 부동 소수점 라이브러리를 선택합니다. VFPv3 단위를 구현하는 시스템에서 Thumb 코드와 ARM 코드가 인터워킹하는 경우 이 옵션을 선택합니다.
FPU 아키텍처의 전체 목록을 가져오려면 --fpu list 옵션을 지정하십시오.