RealView® Compilation Tools 컴파일러 사용 설명서

버전 4.0


Table of Contents

1. 서문
설명서 개요
대상 독자
설명서 사용
표기 규칙
추가 정보
사용자 의견
RealView Compilation Tools에 대한 사용자 의견
설명서에 대한 사용자 의견
1. 소개
1.1. ARM 컴파일러 개요
1.2. NEON 벡터화 컴파일러 개요
1.3. 소스 언어 모드
1.4. C 및 C++ 라이브러리
2. ARM 컴파일러 시작하기
2.1. 명령 행 옵션 사용
2.1.1. ARM 컴파일러 호출
2.1.2. 명령 행 옵션 순서 지정
2.1.3. 환경 변수를 통한 명령 행 옵션 지정
2.1.4. 명령 행 옵션 자동 완성
2.1.5. 파일에서 컴파일러 옵션 읽기
2.1.6. stdin 입력 지정
2.2. 파일 명명 규칙
2.2.1. 이식성
2.2.2. 출력 파일
2.3. 헤더 파일
2.3.1. 현재 위치
2.3.2. RVCT40INC 환경 변수
2.3.3. 검색 경로
2.3.4. TMP 및 TMPDIR 환경 변수
2.4. 사전 컴파일된 헤더 파일
2.4.1. 자동 PCH 처리
2.4.2. 수동 PCH 처리
2.4.3. PCH 처리 중 메시지 출력 제어
2.4.4. 성능 문제
2.5. 타겟 프로세서 또는 아키텍처 지정
2.5.1. NEON 기술
2.6. AAPCS(프로시저 호출 표준) 지정
2.6.1. 인터워킹 한정자
2.6.2. 위치 독립 한정자
2.7. 링커 피드백 사용
2.7.1. 사용하지 않는 함수 제거
2.7.2. 인터워킹에 필요한 컴파일 감소
2.8. 기호 버전 추가
3. NEON 벡터화 컴파일러 사용
3.1. NEON 장치
3.2. NEON용 코드 작성
3.2.1. NEON C 확장
3.2.2. 자동 벡터화
3.2.3. 성능 목표
3.3. 자동 벡터화 사용
3.3.1. 자동 벡터화 개요
3.3.2. 벡터화 개념
3.3.3. 벡터화 성능에 영향을 미치는 요소
3.3.4. 성능 향상
3.4. 예
4. 컴파일러 기능
4.1. 내장 함수
4.1.1. 내장 함수 개요
4.1.2. 명령어 내장 함수
4.1.3. ETSI 기본 연산
4.1.4. TI C55x 내장 함수
4.1.5. 명명된 레지스터 변수
4.1.6. NEON 내장 함수
4.2. Pragma
4.3. 비트 밴딩
4.3.1. __attribute__((bitband)) 사용
4.3.2. 명령 행에서 --bitband 사용
4.3.3. 제한
4.4. 스레드-지역 스토리지
4.5. 8바이트 정렬 기능
5. 코딩 방법
5.1. 코드 최적화
5.1.1. 크기 및 속도 최적화
5.1.2. 최적화 수준 및 디버그 뷰
5.1.3. 타겟 CPU 선택
5.1.4. 루프 최적화
5.1.5. 휘발성 사용
5.2. 코드 메트릭스
5.2.1. 코드 및 데이터 크기 측정
5.2.2. 스택 사용 측정
5.2.3. 객체 및 라이브러리에서 디버그 정보 줄이기
5.3. 함수
5.3.1. 매개변수 전달 오버헤드 최소화
5.3.2. __value_in_regs
5.3.3. __pure
5.3.4. ARM 함수 한정자 배치
5.4. 함수 인라인
5.4.1. 컴파일러의 인라인 결정 방식
5.4.2. 컴파일러에서 인라인하기 적당한 경우
5.4.3. 인라인 관리
5.4.4. 자동 인라인
5.4.5. C++, C90, C99 및 GNU C90 컴파일러 모드 간의 동작 차이
5.4.6. 링커 인라인
5.4.7. 데이터와 --no_inline 및 --inline 명령 행 옵션 디버그
5.4.8. 함수를 정적으로 표시
5.4.9. ROM 이미지에서 인라인 함수에 브레이크포인트 설정
5.5. 데이터 정렬
5.5.1. 데이터 정렬 유형
5.5.2. 정렬되지 않은 데이터 액세스
5.5.3. __packed 한정자 및 정렬되지 않은 액세스
5.5.4. __packed 구조체 및 개별 __packed 필드
5.6. 부동 소수점 산술 사용
5.6.1. 부동 소수점 연산 지원
5.6.2. VFP 아키텍처
5.6.3. VFP 지원
5.6.4. 단정밀도 부동 소수점 숫자 지원
5.6.5. 부동 소수점 계산 및 연결
5.7. 0으로 나누기 오류 트래핑 및 확인
5.7.1. 정수 나누기
5.7.2. (소프트웨어) 부동 소수점 나누기
5.8. C99의 새로운 기능
5.8.1. 언어 기능
5.8.2. 새로운 기능
6. 진단 메시지
6.1. 진단 리디렉션
6.2. 진단 메시지의 심각도
6.3. 진단 메시지의 출력 제어
6.4. 진단 메시지 심각도 변경
6.5. 진단 메시지 표시 안 함
6.6. 진단 메시지의 접두사 문자
6.7. -W 옵션을 지정하여 경고 메시지를 표시하지 않음
6.8. 상태 코드 종료 및 종료 메시지
6.8.1. 신호에 응답
6.8.2. 상태 종료
6.9. 데이터 흐름 경고
7. 인라인 및 임베디드 어셈블러 사용
7.1. 인라인 어셈블러
7.1.1. 인라인 어셈블러 지원
7.1.2. 인라인 어셈블러 구문
7.1.3. 인라인 어셈블리 연산의 제한
7.1.4. 가상 레지스터
7.1.5. 상수
7.1.6. 명령어 확장
7.1.7. 조건 플래그
7.1.8. 피연산자
7.1.9. 함수 호출 및 분기
7.1.10. 레이블
7.1.11. 이전 버전 ARM C/C++ 컴파일러와의 차이
7.2. 임베디드 어셈블러
7.2.1. 임베디드 어셈블러 구문
7.2.2. 임베디드 어셈블리 연산의 제한
7.2.3. 임베디드 어셈블리 식과 C 또는 C++ 식의 차이점
7.2.4. 임베디드 어셈블리 함수의 생성
7.2.5. __cpp 키워드
7.2.6. 수동으로 오버로드 해결
7.2.7. 관련된 기본 클래스에 대한 키워드
7.2.8. 구성원 함수 클래스에 대한 키워드
7.2.9. 비정적 구성원 함수 호출
7.3. sp, lr 또는 pc에 액세스하는 레거시 인라인 어셈블러
7.3.1. 레거시 코드에서 sp(r13), lr(r14) 및 pc(r15) 액세스
7.4. 인라인 어셈블리 코드와 임베디드 어셈블리 코드의 차이점

소유권 고지 사항

이 소유권 고지 사항의 아래 부분에서 달리 명시되지 않는 한 또는 표시가 있는 단어와 로고는 EU, 대한민국 및 기타 국가에서 ARM Limited의 등록 상표 또는 상표입니다. 이 설명서에 언급된 기타 브랜드와 이름은 해당 소유자의 상표일 수 있습니다.

이 설명서에 포함된 전체 또는 일부 정보나 설명된 제품은 해당 저작권 소유자의 사전 서면 승인 없이는 어떤 형태로도 개조되거나 복제될 수 없습니다.

이 설명서에 설명된 제품은 지속적으로 개발 및 개선될 수 있습니다. 이 설명서에 포함된 모든 제품 명세와 해당 사용법은 ARM의 신뢰하에 제공됩니다. 그러나 ARM에서는 상품성 또는 특정 목적에의 적합성을 비롯하여 그 밖의 묵시적이거나 명시적인 모든 보증을 부인합니다.

이 설명서는 제품 사용자를 지원하는 용도로만 만들어졌습니다. ARM은 이 설명서 정보의 사용, 정보의 오류나 누락 또는 제품의 잘못된 사용에 따른 어떠한 손실이나 손상도 책임지지 않습니다.

ARM이라는 단어가 사용되는 경우 “ARM이나 해당하는 자회사”를 의미합니다.

기밀 상태

이 설명서는 기밀 문서가 아닙니다. 이 설명서의 사용, 복사 및 공개 권한은 ARM과 설명서 사용 당사자의 동의하에 라이센스 제한을 받습니다.

액세스 제한 없음은 ARM의 내부 분류입니다.

제품 상태

이 설명서의 정보는 개발이 완료된 제품에 대한 최종 정보입니다.

Revision History
Revision A2002년 8월릴리스 1.2
Revision B2003년 1월릴리스 2.0
Revision C2003년 9월RealView Developer Suite 버전 2.0용 릴리스 2.0.1
Revision D2004년 1월RealView Developer Suite 버전 2.1용 릴리스 2.1
Revision E2004년 12월RealView Developer Suite 버전 2.2용 릴리스 2.2
Revision F2005년 5월RealView Developer Suite 버전 2.2 SP1용 릴리스 2.2
Revision G2006년 3월RealView Development Suite 버전 3.0용 릴리스 3.0
Revision H2007년 3월RealView Development Suite 버전 3.1용 릴리스 3.1
Revision I2008년 9월RealView Development Suite 버전 4.0용 릴리스 4.0
Revision I2009년 1월 23일RealView Development Suite 버전 4.0용 설명서 업데이트
Copyright © 2002-2009 ARM Limited. All rights reserved.ARM DUI 0205IK
Non-Confidential