RealView ® CompilationTools 컴파일러 사용 설명서

버전 3.1


Table of Contents

서문
설명서 개요
대상 독자
설명서 사용
표기 규칙
추가 정보
사용자 의견
RealView Compilation Tools에 대한 사용자의견
설명서에 대한 사용자 의견
1. 소개
1.1. ARM 컴파일러 개요
1.2. 소스 언어 모드
1.3. C 및 C++ 라이브러리
1.4. C99의 새로운 기능
1.4.1. 언어 기능
1.4.2. 새로운 기능
2. ARM 컴파일러 시작하기
2.1. 명령 행 옵션 사용
2.1.1. ARM 컴파일러 호출
2.1.2. 명령 행 옵션 순서 지정
2.1.3. 환경 변수를 통한 명령 행 옵션 지정
2.1.4. 명령 행 옵션 자동 완성
2.1.5. 파일에서 컴파일러 옵션 읽기
2.1.6. 키보드 입력 지정
2.2. 파일 명명 규칙
2.2.1. 이식성
2.2.2. 출력 파일
2.3. Include 파일
2.3.1. 현재 위치
2.3.2. RVCT31INC 환경 변수
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.8. 심볼 버전 추가
2.9. 스레드-지역 스토리지
2.10. 8바이트 정렬 기능
3. 컴파일러 기능
3.1. 내장 함수
3.1.1. 내장 함수 개요
3.1.2. 명령어 내장 함수
3.1.3. ETSI 기본 연산
3.1.4. TI C55x 내장 함수
3.1.5. 명명된 레지스터 변수
3.1.6. NEON 내장 함수
3.2. pragma
4. 코딩 방법
4.1. 코드 최적화
4.1.1. 크기 및 속도 최적화
4.1.2. 최적화 수준 및 디버그 뷰
4.1.3. 타겟 CPU 선택
4.1.4. 루프 최적화
4.1.5. 휘발성 사용
4.2. 코드 메트릭스
4.2.1. 코드 및 데이터 크기 측정
4.2.2. 스택 사용 측정
4.2.3. 개체 및 라이브러리에서 디버그 정보 줄이기
4.3. 함수
4.3.1. 매개변수 전달 오버헤드 최소화
4.3.2. __value_in_regs
4.3.3. __pure
4.3.4. ARM 함수 한정자 배치
4.4. 인라인
4.4.1. 컴파일러의 인라인 결정 방식
4.4.2. 컴파일러에서 인라인하기 적당한 경우
4.4.3. 인라인 관리
4.4.4. 여러 개의 파일에서 함수 인라인
4.4.5. 디버깅 데이터 및 --[no]_inline 키워드
4.4.6. 함수를 정적으로 표시
4.4.7. ROM 이미지에서 인라인된 함수에 브레이크 포인트 설정
4.5. 데이터 정렬
4.5.1. 데이터 정렬 개요
4.5.2. __packed 한정자 및 데이터에 대한 정렬되지 않은 액세스
4.5.3. __packed 구조체 및 개별 __packed 필드
4.6. 부동 소수점 산술 사용
4.6.1. 부동 소수점 연산 지원
4.6.2. VFP 아키텍처
4.6.3. --fpu 옵션
4.6.4. 부동 소수점 링키지
4.6.5. --fpmode 옵션
4.6.6. --fpu 옵션 사용
4.6.7. VFP 지원
4.7. 0으로 나누기 오류 트랩 및 확인
4.7.1. 정수 나누기
4.7.2. (소프트웨어) 부동 소수점 나누기
4.8. ARM 아키텍처 버전 6 지원
4.8.1. 명령어 생성
4.8.2. 정렬 지원
4.8.3. 엔디안 지원
5. 진단 메시지
5.1. 진단 리디렉션
5.2. 진단 메시지의 심각도
5.3. 진단 메시지의 출력 제어
5.4. 진단 메시지 심각도 변경
5.5. 진단 메시지 표시 안 함
5.6. 진단 메시지의 접두사 문자
5.7. -W 옵션을 지정하여 경고 메시지를 표시하지 않음
5.8. 상태 코드 종료 및 종료 메시지
5.8.1. 신호에 응답
5.8.2. 상태 종료
5.9. 데이터 흐름 경고
6. 인라인 및 임베디드 어셈블러 사용
6.1. 인라인 어셈블러
6.1.1. 인라인 어셈블러 구문
6.1.2. 인라인 어셈블리 연산의 제한
6.1.3. 가상 레지스터
6.1.4. 상수
6.1.5. 명령어 확장
6.1.6. 조건 플래그
6.1.7. 피연산자
6.1.8. 함수 호출 및 분기
6.1.9. 레이블
6.1.10. 이전 버전 ARM C/C++ 컴파일러와의 차이
6.2. 임베디드 어셈블러
6.2.1. 임베디드 어셈블러 구문
6.2.2. 임베디드 어셈블리 연산의 제한
6.2.3. 임베디드 어셈블리 식과 C 또는 C++ 식의 차이점
6.2.4. 임베디드 어셈블리 함수의 생성
6.2.5. __cpp 키워드
6.2.6. 수동으로 오버로드 해결
6.2.7. 관련된 기본 클래스에 대한 키워드
6.2.8. 구성원 함수 클래스에 대한 키워드
6.2.9. 비정적 구성원 함수 호출
6.2.10. 이전 버전 ARM C/C++ 컴파일러와의 차이
6.3. sp, lr 또는 pc에 액세스하는 레거시 인라인 어셈블러
6.3.1. 레거시 코드에서 sp(r13), lr(r14) 및 pc(r15)액세스
6.4. 인라인 어셈블리 코드와 임베디드 어셈블리 코드의 차이점
A. 이전 명령 행 옵션 사용
A.1. 이전 도구 이름을 사용하여 ARM 컴파일러 호출
A.2. ADS 1.2에서 명령 행 옵션 마이그레이션
A.2.1. ADS 1.2 컴파일러 옵션을 새 릴리스로 매핑
A.2.2. 새 릴리스에서 ADS 1.2 진단 메시지 제어
A.3. RVCT 2.2 및 RVCT 3.0에서 명령 행 옵션 마이그레이션
A.3.1. RVCT 2.2 컴파일러 옵션을 새 릴리스로 매핑
A.3.2. RVCT 3.0 컴파일러 옵션을 새 릴리스로 매핑
A.4. 이전 옵션에 대한 RVCT 경고 메시지
A.5. 추가 정보 얻기

소유권 고지 사항

® 또는 ™ 표시가 있는 단어와 로고는 ARM Limited 소유의등록 상표 또는 상표입니다. 이 설명서에 언급된 기타 브랜드와 이름은 해당 소유자의 상표일 수 있습니다.

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

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

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

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

기밀 상태

이 설명서는 기밀 문서가 아닙니다. 이 설명서의사용, 복사 및 공개에 대한 권한은 ARM과 ARM으로부터이 설명서를 제공받은 당사자가 동의한 계약 조건에따라 라이센스 제한의 적용을 받을 수 있습니다.

제품 상태

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

Revision History
Revision A 2002년8월 릴리스 1.2
Revision B 2003년1월 릴리스 2.0
Revision C 2003년9월 RVDS 버전 2.0용 릴리스 2.0.1
Revision D 2004년1월 RVDS 버전 2.1용 릴리스 2.1
Revision E 2004년12월 RVDS 버전 2.2용 릴리스 2.2
Revision F 2005년5월 RVDS 버전 2.2 SP1용 릴리스 2.2
Revision G 2006년3월 RVDS 버전 3.0용 릴리스 3.0
Revision H 2007년3월 RVDS 버전 3.1용 릴리스 3.1
Copyright © 2002-2007 ARM Limited. All rights reserved. ARM DUI 0205HK
Non-Confidential