| |||
Home > 이전 릴리스 개요 > RVCT 버전 3.0과 RVCT 버전 2.2의 차이점 > RVCT 버전 3.0에서 ARM 어셈블러의 변경 사항 |
RVCT 버전 3.0에서 변경된 사항은 다음과 같습니다.
RVCT 버전 3.0에서는 ARMv7에 대한 Thumb-2EE(Thumb-2 Execution Environment) 아키텍처 확장을 지원합니다. Thumb-2EE는 Thumb-2를 기반으로 합니다. 주요 차이점은 다음과 같습니다.
Thumb 상태와 새로운 ThumbEE 상태에 상태 변경 명령어인 ENTERX
및 LEAVEX
가
새로 추가되었습니다.
처리기로 분기하는 HB
, HBL
, HBLP
및 HBP
명령어가
새로 추가되었습니다.
로드 및 저장 시 null 포인터가 검사됩니다.
ThumbEE 상태에 배열 경계를 검사하는 CHKA
명령어가 추가되었습니다.
그 밖에 로드, 저장 및 분기 명령어(BX
, BLX
및 BXJ
)의
일부 동작이 수정되었습니다.
RVCT 버전 3.0에는 ARMv7 아키텍처의 두 가지 선택적 구성요소인 Advanced SIMD Extension과 VFPv3에 대한 초기 지원이 추가되었습니다.
Advanced SIMD Extension은 다음 항목으로 구성되어 있습니다.
Advanced SIMD 레지스터. VFPv3 레지스터 뱅크와 동일하지만 32개의 64비트 레지스터나 16개의 128비트 레지스터로 나타난다는 점이 다릅니다.
Advanced SIMD 레지스터를 요소의 벡터로 처리하는 다양한 새 명령어
이러한 새 명령어는 ARM 명령어 세트와 Thumb-2 명령어 세트 모두에서 사용할 수 있습니다.
VFPv3은 VFPv2에 비해 다음 기능이 향상되었습니다.
VFPv2 레지스터 뱅크가 대폭 확장되어 이전의 VFP 레지스터 뱅크가 32개의 64비트 레지스터로 두 배로 늘어났습니다. 이러한 레지스터는 일반적인 용도의 주 ARM 레지스터에 추가되었습니다.
일반적으로 사용되는 상당수의 부동 소수점 숫자를 효율적으로 로드하고 부동 소수점 형식과 고정 소수점 형식 사이를 효율적으로 변환하는 몇몇 명령어가 새로 추가되었습니다.
이러한 새 명령어는 ARM 명령어 세트와 Thumb-2 명령어 세트 모두에서 사용할 수 있습니다.
ARM이 고급 SIMD 명령어를 지원하게 됨으로써 FPSCR(Floating-Point Status and Control Register)의 비트 27은 포화 정수 연산에서 포화가 발생할 때 이를 표시하기 위한 누적 플래그로 예약되었습니다.
ARM 어셈블러는 PXA270 프로세서용 코드를 개발하기 위해 Intel Wireless MMX 기술 명령어를 어셈블하는 데 사용할 수 있습니다. 두 가지 지시문이 새로 추가되었으며 기호와 리터럴을 지원할 수 있도록 load/store 명령어의 구문이 변경되었습니다.
출력을 파일에 나열하려면 다음 옵션을 사용합니다.
--list file
을 지정하지
않을 경우 file
--list=
를 사용하여 출력을
로
보냅니다.inputfile
.lst
--list
를 사용하여 출력을 .lst
파일로
보낼 수 있습니다. 그러나 이 구문은 향후 제공되지 않을 예정이므로 이 구문을 사용하면 어셈블러에서 경고가 표시됩니다.
다음 두 가지 지시문이 새로 추가되었습니다.
RELOC
- 개체
파일에서 ELF 재배치를 인코딩합니다.
QN
- 지정한 NEON™ 4단어
레지스터의 이름을 정의합니다.
ARM 어셈블러에서는 이제 gcc에서 보고되는 형식과
일치하는 메시지를 표시하는 명령 행 옵션 --diag_style gnu
를 지원합니다.
이 옵션과 이전 릴리스에서 사용할 수 있었던 arm
및 ide
형식을
함께 사용할 수 있습니다.
지역 기호는 armasm --debug
를 통해 더 이상
유지되지 않습니다. 디버깅에 유용하도록 지역 기호를 유지하려면 --keep
을 지정해야
합니다.
RVCT 버전 2.2에서는 Thumb 어셈블러 코드에서 지역 레이블이 있는 LDR
의사
명령어를 사용할 경우 Thumb 비트가 설정되지 않은 주소가 생성되었습니다. 코드에 이 동작이 필요하면 armasm
--untyped_local_labels
를 사용합니다.