정수 승격과 형변환 문제
정수 승격
연산: A + B
작은 타입이 큰 타입으로 변환된다.
대입: A = B
우변이 좌변 타입에 맞게 변환된다.
호출: f(int x) 함수에 f(3.14) 호출
argument가 parameter에 맞게 변환된다.
LDR, STR 명령 데이터 타입 지정하기
LDR --> int 로드
LDRB --> unsigned byte 로드
LDRSB --> signed byte 로드
LDRH --> unsigned short 로드
LDRSH --> signed short 로드
STR--> int 로드
STRB--> unsigned byte 저장
STRH--> unsigned short 저장
LDRD, STRD 명령
double load, store
주의사항:
1. 연속한 레지스터 Rn, Rn+1에 저장할 것.
2. Rn은 반드시 짝수번호.
3. 메모리 주소는 반드시 4의 배수 (4B align).
4. LDRD, STRD 명령은 shift 옵션 사용 불가.
UXT, SXT 명령
char나 short를 쉽게 signed int로 승격시킬 수 있는 명령!
UXTH r0, r0 --> 하위 16비트를 추출하고 상위 비트에 0 확장.
SXTH r0, r0 --> signed int로 부호 확장
UXTB r0, r0 --> 하위 8비트 추출하고 상위 비트에 0 확장.
SXTB r0, r0 --> 부호 확장.
'한국으로 > ARM' 카테고리의 다른 글
Cortex-A9 Coprocessor (0) | 2018.07.29 |
---|---|
Interrupt Controller (0) | 2018.07.29 |
ARM Mode(모드) and Exception(예외) (0) | 2018.07.24 |
Tail Call (0) | 2018.07.24 |
다중 메모리 이동: LDM, STM (0) | 2018.07.22 |
AAPCS와 레지스터 테이블 (0) | 2018.07.21 |
ARM의 특수 용도 레지스터 (0) | 2018.07.21 |
호출 규약 __cdecl 과 __stdcall의 차이점 (0) | 2018.07.21 |