2.1.19. --cpu=name

이 옵션은 사용하면 선택된 ARM 프로세서 또는 아키텍처에 대한 코드를 생성할 수 있습니다.

구문

--cpu=name

인수 설명:

name

프로세서 또는 아키텍처의 이름입니다.

name이 프로세서의 이름인 경우 ARM7TDMI, ARM1176JZ-S, MPCore 등과 같이 ARM 데이터시트에 표시되는 대로 이름을 입력합니다.

name이 아키텍처의 이름인 경우 해당 아키텍처는 Table 2.2에 나와 있는 아키텍처 목록에 있어야 합니다.

프로세서 및 아키텍처 이름은 대소문자를 구분하지 않습니다.

와일드카드 문자는 사용할 수 없습니다.

Table 2.2. 지원되는 ARM 아키텍처 

아키텍처설명
4Thumb이 없는 ARMv4
4TThumb이 있는 ARMv4
5TThumb 및 인터워킹이 있는 ARMv5
5TEThumb, 인터워킹, DSP 곱하기 및 더블워드 명령어가 있는 ARMv5
5TEJThumb, 인터워킹, DSP 곱하기, 더블워드 명령어 및 Jazelle® 확장[1]이 있는 ARMv5
6Thumb, 인터워킹, DSP 곱하기, 더블워드 명령어, 정렬되지 않은 혼합엔디안 지원, Jazelle 및 미디어 확장이 있는 ARMv6
6-M프로세서 상태 명령어만 포함하며 Thumb이 있는 ARMv6 마이크로컨트롤러 프로파일
6KSMP 확장이 있는 ARMv6
6S-M프로세서 상태 명령어 및 OS 확장을 포함하며 Thumb만 있는 ARMv6 마이크로컨트롤러 프로파일
6T2Thumb-2가 있는 ARMv6
6Z보안 확장이 있는 ARMv6
7Thumb-2만 있고 하드웨어 나누기[2]가 없는 ARMv7
7-AARM, Thumb 및 Thumb-2와 Thumb-2EE 명령어 세트가 있고 DSP, 32비트 SIMD 및 가상 MMU 기반 메모리 시스템을 지원하는 ARMv7 응용 프로그램 프로파일
7-RARM, Thumb 및 Thumb-2가 있고 DSP 및 32비트 SIMD를 지원하는 ARMv7 실시간 프로파일
7-M하드웨어 나누기와 Thumb-2만 있는 ARMv7 마이크로컨트롤러 프로파일

[1] ARM 컴파일러에서는 Java 바이트코드를 생성하지 않습니다.

[2] ARM v7은 인식되는 ARM 아키텍처가 아니라 아키텍처 ARMv7-A, ARMv7-R 및 ARMv7-M의 공통 하위 세트입니다.

기본값

--cpu 옵션을 지정하지 않으면 컴파일러에서 --cpu=ARM7TDMI로 간주됩니다.

CPU 아키텍처 및 프로세서의 전체 목록을 가져오려면 --cpu=list 옵션을 사용합니다.

사용법

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

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

  • 지원되는 --cpu 값은 모두 현재 ARM 제품 이름이나 아키텍처 버전입니다.

    Marvell Feroceon 및 Intel XScale과 같은 기타 ARM 아키텍처 기반 프로세서도 지원됩니다.

  • --cpu 옵션에 대해 프로세서를 지정하면 컴파일된 코드가 해당 프로세서에 대해 최적화됩니다. 그러면 컴파일러에서 최적의 성능을 위한 특정 보조 프로세서나 명령어 일정을 사용할 수 있습니다.

아키텍처
  • --cpu 옵션에 아키텍처 이름을 지정하면 해당 아키텍처를 지원하는 모든 프로세서에서 실행할 수 있도록 코드가 컴파일됩니다. 예를 들어 --cpu=5TEARM926EJ-S®에서 사용할 수 있는 코드를 생성합니다.

FPU
  • 일부 --cpu 지정에는 --fpu 선택이 포함됩니다. 예를 들어 --arm 옵션을 사용하여 컴파일할 경우 --cpu=ARM1136JF-S--fpu=vfpv2가 포함됩니다.

    Note

    명령 행에 --fpu를 사용하여 설정하는 명시적 FPU는 암시적 FPU 보다 우선합니다.

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

  • FPU가 있는 아키텍처 v7 프로세서가 선택된 경우 기본 FPU 유형은 --fpu=vfpv3입니다.

ARM/Thumb
  • --cpu=ARM7TDMI처럼 Thumb 명령어를 지원하는 프로세서를 지정하면 컴파일러에서 Thumb 코드를 생성하지 않습니다. long 곱하기처럼 사용할 프로세서의 기능만 활성화합니다. --thumb 옵션을 사용하여 Thumb 코드를 생성합니다.

    Note

    타겟 프로세서 또는 아키텍처를 지정하면 컴파일러에서 생성된 개체 코드가 다른 ARM 프로세서와 호환되지 않을 수 있습니다. 예를 들어 컴파일된 코드에 ARMv6 전용 명령어가 있는 경우 아키텍처 ARMv6에 대해 컴파일된 코드는 ARM920T 프로세서에서 실행되지 않을 수 있습니다. 따라서 목적에 맞는 최소 공통 분모 프로세서를 선택해야 합니다.

  • ARMv4T 또는 ARMv5T를 지원하는 프로세서에 대한 ARM/Thumb 혼합 시스템용으로 만들어진 코드를 컴파일하는 경우 인터워킹 옵션 --apcs=/interwork를 지정해야 합니다. ARMv5T 이상을 지원하는 프로세서에서는 이 옵션이 기본적으로 설정되어 있습니다.

  • Thumb에 대해 컴파일하는 경우, 즉 명령 행에 --thumb 옵션을 사용하는 경우 컴파일러에서는 Thumb 명령어 세트를 사용하여 코드를 가능한 많이 컴파일합니다. 그러나 컴파일러에서 컴파일 중 일부에 사용되는 ARM 코드를 생성할 수 있습니다. 예를 들어 Thumb-1 프로세서에 대한 코드를 컴파일하고 VFP를 사용하는 경우 부동 소수점 연산이 포함된 모든 함수가 ARM에 대해 컴파일됩니다.

  • --cpu=Cortex-M3와 같이 ARMv7-M에 대한 코드를 컴파일하는 경우에는 ARMv7-M은 Thumb-2만 지원하기 때문에 명령 행에 --thumb를 지정할 필요가 없습니다.

제한

같은 명령 행에 프로세서와 아키텍처를 둘 다 지정할 수는 없습니다.

추가 참고

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential