반응형
ARMv8 아키텍처에는 aarch64와 aarch32라는 2개의 실행 상태가 정의되어 있다.
aarch64 | aarch32 | |
특징 | 64비트 실행 환경 | 32비트 실행 환경 |
레지스터 | - 64비트 크기의 범용 레지스터 31개 - PC (Program Counter) - SP (Stack Pointer) - ELR (Exception Link Register) |
- 32비트 크기의 범용 레지스터 13개 - PC (Program Counter) - SP (Stack Pointer) - LR (Link Register) |
인스트럭션 세트 | A64(32비트 인코딩) | A32(ARMv7 지원), T32(Thumb) |
주소 방식 | 64비트 가상 주소 | 32비트 가상 주소 |
익셉션 모델 | ARMv8 익셉션 모델(EL0 ~ EL3) | ARMv7 익셉션 모델(ARMv8에 매핑됨) |
aarch32는 ARMv7과의 호환성을 지원하기 위해 제공된다.
ARMv7용으로 빌드된 바이너리는 거의 수정 없이 ARMv8의 aarch32에서 동작 가능하다.
실행 환경이 다르기 때문에 바이너리는 aarch64 또는 aarch32 중 하나를 타깃으로 빌드되어야 한다.
반응형
'리버싱 > ARM' 카테고리의 다른 글
ARMv8 레지스터 (0) | 2021.02.09 |
---|---|
실행 상태 변경 (0) | 2021.02.09 |
Exception Level 변경 (0) | 2021.02.09 |
ARMv8 Exception Model (0) | 2021.02.09 |
ARMv8 (0) | 2021.02.09 |