리버싱/ARM

실행 상태

cyanhe_wh 2021. 2. 9. 21:13
반응형

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