RealView ® CompilationTools 컴파일러 참조 설명서

버전 3.1


Table of Contents

서문
설명서 개요
대상 독자
설명서 사용
표기 규칙
추가 정보
사용자 의견
RealView Compilation Tools에 대한 사용자의견
설명서에 대한 사용자 의견
1. 소개
1.1. ARM 컴파일러 개요
1.2. 소스 언어 모드
1.2.1. ISO C90
1.2.2. ISO C99
1.2.3. ISO C++
1.3. 언어 확장 및 언어 호환
1.3.1. 언어 확장
1.3.2. 언어 호환
1.4. C 및 C++ 라이브러리
2. 컴파일러 명령 행 옵션
2.1. 명령 행 옵션
2.1.1. -Aopt
2.1.2. --[no_]alternative_tokens
2.1.3. --[no_]anachronisms
2.1.4. --apcs=qualifer ...qualifier
2.1.5. --arm
2.1.6. --asm
2.1.7. --[no_]autoinline
2.1.8. --bi gend
2.1.9. --[no_]brief_diagnostics
2.1.10. --bss_threshold=num
2.1.11. -c
2.1.12. -C
2.1.13. --c90
2.1.14. --c99
2.1.15. --[no_]code_gen
2.1.16. --[no_]compile_all_input
2.1.17. --cpp
2.1.18. --cpu=list
2.1.19. --cpu=name
2.1.20. --create_pch=filename
2.1.21. -Dname [(parm-list )][=def ]
2.1.22. --[no_]data_reorder
2.1.23. --[no_]debug
2.1.24. --[no_]debug_macros
2.1.25. --default_extension=ext
2.1.26. --[no_]dep_name
2.1.27. --depend=filename
2.1.28. --depend_format=string
2.1.29. --[no_]depend_system_headers
2.1.30. --diag_error=tag [,tag ,...]
2.1.31. --diag_remark=tag [,tag ,... ]
2.1.32. --diag_style={arm|ide|gnu}
2.1.33. --diag_suppress=tag [,tag ,...]
2.1.34. --diag_suppress=optimizations
2.1.35. --diag_warning=tag [,tag ,...]
2.1.36. --diag_warning=optimizations
2.1.37. --[no_]dllexport_all
2.1.38. --[no_]dllimport_runtime
2.1.39. --[no_]dollar
2.1.40. --dwarf2
2.1.41. --dwarf3
2.1.42. -E
2.1.43. --enum_is_int
2.1.44. --errors=filename
2.1.45. --[no_]exceptions
2.1.46. --[no_]exceptions_unwind
2.1.47. --[no_]export_all_vtbl
2.1.48. --[no_]export_defs_implicitly
2.1.49. --[no_]extended_initializers
2.1.50. --feedback=filename
2.1.51. --[no_]force_new_nothrow
2.1.52. --forceinline
2.1.53. --fpmode=model
2.1.54. --fpu=list
2.1.55. --fpu=name
2.1.56. --[no_]friend_injection
2.1.57. --gnu
2.1.58. --[no_]guiding_decls
2.1.59. --help
2.1.60. --[no_]hide_all
2.1.61. -Idir [,dir ,...]
2.1.62. --[no_]implicit_include
2.1.63. --[no_]implicit_include_searches
2.1.64. --[no_]implicit_typename
2.1.65. --info=totals
2.1.66. --[no_]inline
2.1.67. --interleave
2.1.68. -Jdir [,dir ,...]
2.1.69. --kandr_include
2.1.70. -Lopt
2.1.71. --library_interface=lib
2.1.72. --library_type=lib
2.1.73. --list
2.1.74. --li ttleend
2.1.75. --locale=lang_country
2.1.76. --loose_implicit_cast
2.1.77. --[no_]lower_ropi
2.1.78. --[no_]lower_rwpi
2.1.79. -M
2.1.80. --md
2.1.81. --message_locale=lang_country [.codepage ]
2.1.82. --min_array_alignment=opt
2.1.83. --[no_]multibyte_chars
2.1.84. --[no_]multifile
2.1.85. --[no_]nonstd_qualifier_deduction
2.1.86. -o filename
2.1.87. -Onum
2.1.88. --[no_]old_specializations
2.1.89. -Ospace
2.1.90. -Otime
2.1.91. --[no_]parse_templates
2.1.92. --pch
2.1.93. --pch_dir=dir
2.1.94. --[no_]pch_messages
2.1.95. --[no_]pch_verbose
2.1.96. --pending_instantiations=n
2.1.97. --pointer_alignment=num
2.1.98. --[no_]project=filename
2.1.99. --preinclude=filename
2.1.100. --[no_]reduce_paths
2.1.101. --reinitialize_workdir
2.1.102. --remarks
2.1.103. --[no_]restrict
2.1.104. --[no_]rtti
2.1.105. -S
2.1.106. --[un]signed_bitfields
2.1.107. --[un]signed_chars
2.1.108. --show_cmdline
2.1.109. --split_ldm
2.1.110. --split_sections
2.1.111. --[no_]strict
2.1.112. --strict_warnings
2.1.113. --sys_include
2.1.114. --thumb
2.1.115. -Uname
2.1.116. --[no_]unaligned_access
2.1.117. --use_pch=filename
2.1.118. --[no_]using_std
2.1.119. --[no_]vectorize
2.1.120. --[no_]vfe
2.1.121. --via=filename
2.1.122. --[no_]vla
2.1.123. --vsn
2.1.124. -W
2.1.125. --wchar16
2.1.126. --wchar32
2.1.127. --workdir=directory
2.1.128. --[no_]wrap_diagnostics
3. 언어 확장
3.1. 사전 처리기 확장
3.1.1. #assert
3.1.2. #include_next
3.1.3. #unassert
3.1.4. #warning
3.2. C90에서 사용할 수 있는 C99 언어 기능
3.2.1. // 주석
3.2.2. struct 첨자화
3.2.3. 유연한 배열 구성원
3.3. C++ 및 C90에서 사용할 수 있는 C99 언어 기능
3.3.1. 가변성 매크로
3.3.2. long long
3.3.3. restrict
3.3.4. 16진수 부동 소수점 숫자
3.4. 표준 C 언어 확장
3.4.1. 상수 식
3.4.2. 배열 및 포인터 확장
3.4.3. 블록 범위 함수 선언
3.4.4. 식별자에 사용되는 달러 부호
3.4.5. 최상위 수준의 선언
3.4.6. 재선언
3.4.7. 외부 엔터티
3.4.8. 함수 프로토타입
3.5. 표준 C++ 언어 확장
3.5.1. ? 연산자
3.5.2. 클래스 구성원의 선언
3.5.3. friend
3.5.4. 상수 읽기/쓰기
3.5.5. 스칼라 유형 상수
3.5.6. 유형 변환
3.6. 표준 C 및 표준 C++ 언어 확장
3.6.1. 레지스터 변수의 주소
3.6.2. 인수 대 함수
3.6.3. 익명 클래스, 구조체 및 공용체
3.6.4. 어셈블러 레이블
3.6.5. 빈 선언
3.6.6. 16진수 부동 소수점 상수
3.6.7. 불완전한 열거형
3.6.8. 정수 유형 확장
3.6.9. 레이블 정의
3.6.10. Long float
3.6.11. 비 정적 지역 변수
3.6.12. 구조체, 공용체, enum 및 비트 필드 확장
3.7. GNU 언어 확장
3.7.1. 대체 키워드
3.7.2. asm 키워드
3.7.3. 케이스 범위
3.7.4. 공용체의 캐스트
3.7.5. 문자 확장 시퀀스
3.7.6. 복합 리터럴
3.7.7. 지정된 이니셜라이저
3.7.8. 조건부
3.7.9. 이니셜라이저
3.7.10. 인라인
3.7.11. 확장된 lvalues
3.7.12. 포인터 산술
3.7.13. 문 식
3.7.14. 명명되지 않은 필드
4. 컴파일러 관련 기능
4.1. 키워드 및 연산자
4.1.1. __align
4.1.2. __alignof__
4.1.3. __ALIGNOF__
4.1.4. __asm
4.1.5. __forceinline
4.1.6. __global_reg
4.1.7. __inline
4.1.8. __int64
4.1.9. __INTADDR__
4.1.10. __irq
4.1.11. __packed
4.1.12. __pure
4.1.13. __smc
4.1.14. __softfp
4.1.15. __svc
4.1.16. __svc_indirect
4.1.17. __svc_indirect_r7
4.1.18. __value_in_regs
4.1.19. __weak
4.1.20. __writeonly
4.2. __declspec 특성
4.2.1. __declspec(dllexport)
4.2.2. __declspec(dllimport)
4.2.3. __declspec(noinline )
4.2.4. __declspec(noreturn )
4.2.5. __declspec(nothrow)
4.2.6. __declspec(notshared)
4.2.7. __declspec(thread)
4.3. 함수 특성
4.3.1. __attribute__((alias))
4.3.2. __attribute__((always_inline))
4.3.3. __attribute__((const))
4.3.4. __attribute__((deprecated))
4.3.5. __attribute__((malloc))
4.3.6. __attribute__((noinline))
4.3.7. __attribute__((noreturn))
4.3.8. __attribute__((pure))
4.3.9. __attribute__((section))
4.3.10. __attribute__((unused))
4.3.11. __attribute__((used))
4.3.12. __attribute__((weak))
4.4. 유형 특성
4.4.1. __attribute__((aligned))
4.4.2. __attribute((packed))
4.4.3. __attribute__((transparent_union))
4.5. 변수 특성
4.5.1. __attribute__((alias))
4.5.2. __attribute__((at(address )))
4.5.3. __attribute__((aligned))
4.5.4. __attribute__((deprecated))
4.5.5. __attribute__((packed))
4.5.6. __attribute__((section))
4.5.7. __attribute__((transparent_union))
4.5.8. __attribute__((unused))
4.5.9. __attribute__((used))
4.5.10. __attribute__((weak))
4.5.11. __attribute__((zero_init))
4.6. Pragma
4.6.1. #pragma [no_]anon_unions
4.6.2. #pragma arm
4.6.3. #pragma arm section [section_sort_list ]
4.6.4. #pragma diag_default tag[,tag,...]
4.6.5. #pragma diag_error tag[,tag,...]
4.6.6. #pragma diag_remark tag[,tag,...]
4.6.7. #pragma diag_suppress tag[,tag,...]
4.6.8. #pragma diag_warning tag[,tag, ...]
4.6.9. #pragma [no_]exceptions_unwind
4.6.10. #pragma hdrstop
4.6.11. #pragma import symbol_name
4.6.12. #pragma [no_]inline
4.6.13. #pragma no_pch
4.6.14. #pragma Onum
4.6.15. #pragma once
4.6.16. #pragma Ospace
4.6.17. #pragma Otime
4.6.18. #pragma pop
4.6.19. #pragma push
4.6.20. #pragma [no_]softfp_linkage
4.6.21. #pragma unroll [(n )]
4.6.22. #pragma unroll_completely
4.6.23. #pragma thumb
4.7. 명령어 내장 함수
4.7.1. __breakpoint
4.7.2. __builtin_clz
4.7.3. __builtin_constant_p
4.7.4. __builtin_expect
4.7.5. __builtin_frame_address
4.7.6. __builtin_return_address
4.7.7. __builtin_popcount
4.7.8. __cdp
4.7.9. __clrex
4.7.10. __clz
4.7.11. __current_pc
4.7.12. __current_sp
4.7.13. __disable_fiq
4.7.14. __disable_irq
4.7.15. __enable_fiq
4.7.16. __enable_irq
4.7.17. __fabs
4.7.18. __fabsf
4.7.19. __force_stores
4.7.20. __ldrex
4.7.21. __ldrt
4.7.22. __memory_changed
4.7.23. __nop
4.7.24. __pld
4.7.25. __pli
4.7.26. __qadd
4.7.27. __qdbl
4.7.28. __qsub
4.7.29. __rbit
4.7.30. __rev
4.7.31. __return_address
4.7.32. __ror
4.7.33. __schedule_barrier
4.7.34. __semihost
4.7.35. __sev
4.7.36. __sqrt
4.7.37. __sqrtf
4.7.38. __ssat
4.7.39. __strex
4.7.40. __strt
4.7.41. __swp
4.7.42. __usat
4.7.43. __wfe
4.7.44. __wfi
4.7.45. __yield
4.7.46. ARMv6 SIMD 내장 함수
4.7.47. ETSI 기본 연산
4.7.48. C55x 내장 함수
4.7.49. 명명된 레지스터 변수
4.8. 컴파일러 사전 정의
4.8.1. 사전 정의된 매크로
4.8.2. 함수 이름
5. C 및 C++ 구현 정보
5.1. C 및 C++ 구현 정보
5.1.1. 문자 세트와 식별자
5.1.2. 기본 데이터 유형
5.1.3. 기본 데이터 유형에 대한 연산
5.1.4. 구조체, 공용체, 열거 및 비트필드
5.2. C++ 구현 정보
5.2.1. ::operator new 함수의 사용
5.2.2. 임시 배열
5.2.3. C++ 함수의 이전 스타일 C 매개변수
5.2.4. 구식 표현
5.2.5. 템플릿 인스턴스화
5.2.6. 네임스페이스
5.2.7. C++ 예외 처리
5.2.8. Extern 인라인 함수
A. via 파일 구문
A.1. via 파일 개요
A.1.1. via 파일 평가
A.2. 구문
B. 표준 C 구현 정의
B.1. 구현 정의
B.1.1. 변환
B.1.2. 환경
B.1.3. 식별자
B.1.4. 문자
B.1.5. 정수
B.1.6. 부동 소수점
B.1.7. 배열과 포인터
B.1.8. 레지스터
B.1.9. 구조체, 공용체, 열거 및 비트 필드
B.1.10. 한정자
B.1.11. 식 평가
B.1.12. 사전 처리 지시문
B.1.13. 라이브러리 함수
B.2. ISO C 표준에 정의되지 않은 것으로 간주되는 동작
C. 표준 C++ 구현 정의
C.1. 정수 변환
C.2. 순수 가상 함수의 호출
C.3. 언어 지원의 주요 기능
C.4. 표준 C++ 라이브러리 구현 정의
D. C 및 C++ 컴파일러 구현 한계
D.1. C++ ISO/IEC 표준 한계
D.2. 정수의 한계
D.3. 부동 소수점 숫자의 한계
E. NEON 지원 사용
E.1. 소개
E.2. 벡터 데이터 유형
E.3. 내장 함수
E.3.1. 더하기
E.3.2. 곱하기
E.3.3. 빼기
E.3.4. 비교
E.3.5. 절대 차이
E.3.6. 최대값/최소값
E.3.7. 인접 쌍 더하기
E.3.8. 최대값 폴딩
E.3.9. 최소값 폴딩
E.3.10. 역수/Sqrt
E.3.11. 부호 있는 변수 기준 시프트
E.3.12. 상수 기준 시프트
E.3.13. 삽입하여 시프트
E.3.14. 단일 벡터 로드 및 저장
E.3.15. N 요소 구조체 로드 및 저장
E.3.16. 벡터에서 레인 추출
E.3.17. 벡터 내에 레인 설정
E.3.18. 비트 패턴에서 벡터 초기화
E.3.19. 모든 레인을 같은 값으로 설정
E.3.20. 벡터 결합
E.3.21. 벡터 분할
E.3.22. 벡터 변환
E.3.23. 테이블 조회
E.3.24. 확장된 테이블 조회 내장 함수
E.3.25. 스칼라 값이 있는 연산
E.3.26. 벡터 추출
E.3.27. 벡터 요소 반전(엔디안 스왑)
E.3.28. 기타 단일 피연산자 산술
E.3.29. 논리 연산
E.3.30. 이항 연산
E.3.31. 벡터 재해석 캐스트 연산

List of Tables

2.1. --asm 옵션을 사용하여 컴파일 
2.2. 지원되는 ARM 아키텍처 
2.3. ---interleave 옵션을 사용한 컴파일 
2.4. -o 옵션을 사용하여 컴파일 
2.5. -o 옵션 없이 컴파일 
4.1. ARM 컴파일러에서 지원하는 키워드 확장 
4.2. 컴파일러에서 지원하는 __declspec 특성 및 해당 항목 
4.3. 컴파일러에서 지원하는 함수 특성 및 해당 항목 
4.4. 컴파일러에서 지원하는 유형 특성 및 해당 항목 
4.5. 컴파일러에서 지원하는 변수 특성 및 해당 항목 
4.6. 컴파일러에서 지원하는 Pragma 
4.7. ARM 컴파일러에서 지원하는 명령어 내장 함수 
4.8. __ldrex 내장 함수가 지원하는 액세스 너비 
4.9. __ldrt 내장 함수가 지원하는 액세스 너비 
4.10. __strex 내장 함수가 지원하는 액세스 너비 
4.11. __strt 내장 함수가 지원하는 액세스 너비 
4.12. __swp 내장 함수가 지원하는 액세스 너비 
4.13. RVCT에서 지원하는 ETSI 기본 연산 
4.14. RVCT에 나타나는 ETSI 상태 플래그 
4.15. RVCT에서 지원하는 TI C55x 내장 함수 
4.16. ARM 아키텍처 기반 프로세서에 사용할 수 있는 명명된 레지스터 
4.17. VFP를 사용하는 타겟에서 사용할 수 있는 명명된 레지스터 
4.18. 사전 정의된 매크로 
4.19. 기본 제공 변수 
5.1. 문자 확장 코드 
5.2. 데이터 유형의 크기와 정렬 
C.1. 언어에 대한 주요 기능 지원 
D.1. 구현 한계
D.2. 정수 범위
D.3. 부동 소수점 한계
D.4. 기타 부동 소수점 특성
E.1. 벡터 데이터 유형

소유권 고지 사항

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

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

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

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

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

기밀 상태

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

제품 상태

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

Revision History
Revision A 2007년3월 RVDS 버전 3.1용 릴리스 3.1
Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AK
Non-Confidential