[Arm프로세서] Armv8: 시스템 레지스터
By Guillermo Austin Kim | 2022년 5월 2일 |
Armv8 아키텍처는 범용 레지스터 뿐만 아니라 시스템의 세부 속성을 설정할 수 있는 시스템 레지스터를 정의합니다. 이 중에 자주 사용되는 시스템 레지스터는 잘 익혀둘 필요가 있는데요. 이어서 Arm 스팩 문서를 보면서 시스템 레지스터에 대해 알아봅시다. 4.3 System registersIn AArch64, system configuration is controlled through system registers, and accessed using MSR and MRS instructions. This contrasts with ARMv7-A, where such registers were typically accessed through coprocessor 15 (CP15) operations. Th
[Arm프로세서] 하이퍼바이저 관점의 익셉션 벡터 테이블 분석하기
By Guillermo Austin Kim | 2022년 2월 11일 |
이전 절에서 익셉션 벡터 테이블의 스팩을 분석했습니다. 이어서 EL2가 실행되는 하이퍼바이저 관점에서 익셉션 벡터 테이블을 분석하겠습니다. 다음은 하이퍼바이저가 실행되는 EL2에서 본 익셉션 벡터 테이블의 동작 방식을 나타낸 표입니다. 표 12.2 하이퍼바이저 관점에서 본 익셉션 벡터 테이블 'EL2 with SP_EL0' 열의 내용을 분석하겠습니다. 'EL2 with SP_EL0'은 익셉션 레벨에 상관없이 스택을 설정하는 조건에서 실행되는 익셉션의 종류 별 오프셋을 나타냅니다. 그런데 일반적으로 대부분의 하이퍼바이저에서 지원하지 않습니다. [정보]XEN 하이퍼바이저에서는 'EL2 with SP_EL0' 익셉션을 지원하지 않습니다. 이어서 'EL2에서 발생'로 표기된 부분을 보겠습니다. 0x
ARM64- Stack Push Userspace -> Kernel Space 코드리뷰
By Guillermo Austin Kim | 2017년 12월 31일 |
유저 공간에서 실행된 레지스터가 커널 Bottom Stack에 Push 되는 디버깅 정보를 예전 페이지에 업데이트했잖아요.아래와 같은 메모리 덤프를 확인했었죠.(출처:http://rousalome.egloos.com/9966225)NUD:FFFFFFE4DE6A7EB8| 3C 6B 77 2B 46 76 A8 C2 0xC2A876462B776B3CNUD:FFFFFFE4DE6A7EC0| 45 00 00 00 00 00 00 00 0x45 // x0 NUD:FFFFFFE4DE6A7EC8| 80 37 81 AF 7B 00 00 00 0x7BAF813780 // x1NUD:FFFFFFE4DE6A7ED0| 16 00 00 00 00 00 00 00 0x16 // x2NUD:FFFFFF
[Arm프로세서] AAPCS: Armv7: AAPCS와 관련된 레지스터와 어셈블리 명령어 분석
By Guillermo Austin Kim | 2021년 6월 14일 |
6.1절에서 Arm 스팩 문서 분석으로 AAPCS와 관련된 레지스터를 소개했고, 6.2절에서는 AAPCS와 관련된 어셈블리 명령어에 대해 살펴봤습니다. 이번 절에서는 AAPCS와 관련된 레지스터가 어떻게 사용되는지, 어셈블리 명령어와 함께 분석하면서 자세히 알아보겠습니다. 먼저 AAPCS와 연관된 레지스터의 목록을 알아볼까요? 표 6.4 AAPCS와 연관된 레지스터 먼저 SP 레지스터에 대해 소개하고, SP 레지스터가 어떻게 바뀌는지 어셈블리 명령어 분석으로 알아보겠습니다. Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자