ARM프로세서

포스트: 75|조회수: 0|TERM
Items

Posts

75 posts

[Arm프로세서] 익셉션(Exception) 동작 슈도 코드 소개

Guillermo Austin Kim|2020년 12월 15일

Armv8 문서를 보면 Arm 코어에서 하드웨어적으로 처리하는 동작을 슈도 코드로 표기한 부분을 볼 수 있습니다.문서 이름과 해당 절은 다음과 같습니다. * 문서 이름: DDI0487Fc_armv8_arm.pdf * 해당 절 Part J Architectural Pseudocode J1.1 Pseudocode for AArch64 operation J1-7612 J1.1.1 aarch64/debug J1.1.2 aarch64/exceptions J1.2 Pseudocode for AArch32 operation 샘플 코드에 익숙한 소프트웨어 개발자들에게 샘플 혹은 슈도 코드는 유익한 정보입니다.특히 하이퍼바이저나 트러스트존과 같은 Arm Extention 기능의 동작 원리

[ARM프로세서] ARMv7: 익셉션의 종류별 ARM 동작 모드 정리

Guillermo Austin Kim|2020년 12월 9일

이전 절에서 배운 바와 같이, ARM 코어는 익셉션을 유발할 때 익셉션의 종류에 따라 ARM의 동작 모드를 변경합니다. 익셉션을 다른 관점으로 보면, 익셉션은 "ARM 동작 모드를 변경하는 유발 인자"라고 볼 수 있는데, 다음 표에서 익셉션의 종류 별로 변경되는 ARM 동작 모드를 확인할 수 있습니다. 표 8.2 익셉션의 종류와 변경되는 ARM 동작 모드 표 8.2의 가장 왼쪽 부분은 익셉션의 종류, 가운데 부분은 해당 익셉션이 발생할 때 변경되는 ARM의 동작 모드를 나타냅니다. 가장 왼쪽 부분은 ARM 동작 모드를 담고 있는 CPSR 레지스터의 [4:0] 비트 정보입니다. ARM의 동작 모드를 변경하려면 CPSR 레지스터의 [4:0] 비트를 변경하면 됩니다. Written by <디버깅을 통해

[ARM프로세서] ARMv7: 소프트웨어 인터럽트 타입 익셉션을 유발할 때 ARM 코어의 세부 동작

Guillermo Austin Kim|2020년 12월 9일

ARM 코어가 ‘svc’ 명령어를 실행하면 소프트웨어 인터럽트를 유발합니다. 다음 그림을 보면서, 소프트웨어 인터럽트가 발생할 때 ARM 코어의 세부 동작을 알아봅시다. 그림 8.11 소프트웨어 인터럽트를 유발할 때 변경되는 레지스터 그림 8.11은 소프트웨어 인터럽트 익셉션이 실행되는 흐름을 나타내는데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어적으로 처리되는 부분이 슈도 코드로 표기돼 있습니다. 이 슈도 코드 분석을 통해 ARM 코어의 세부 동작을 알아보겠습니다.  먼저 01번째 줄을 봅시다. 01 R14_svc = 0xc000d000 + 0x4 'svc' 명령어를 ARM 코어가 디코딩을 하면 ARM 의 동작 모드를 슈퍼바이저 모드로 변경할 준비를 합니다. 먼저 슈퍼바이저 모드에서만 사

[ARM프로세서] ARMv7: 인터럽트 타입 익셉션을 유발할 때 ARM 코어의 세부 동작

Guillermo Austin Kim|2020년 12월 3일

이어서 IRQ 익셉션이 발생하는 전체 흐름을 살펴보면서, 세부 동작을 알아봅시다. 그림 8.10 인터럽트 타입 익셉션을 유발할 때 변경되는 레지스터 그림 8.10은 IRQ 인터럽트 익셉션의 전체 실행 흐름을 나타내는데, 그림의 가운데 부분을 보면 ARM 코어가 하드웨어적으로 처리되는 부분이 슈도 코드로 표기돼 있습니다. 이어서 슈도 코드를 분석하면서 ARM 코어의 세부 동작을 알아보겠습니다. 먼저 01번째 줄을 봅시다. 01 R14_irq = 0xc000d000 + 0x4 IRQ 익셉션이 발생했으니 ARM 코어는 IRQ 모드로 변경할 준비를 하는데, 먼저 IRQ 모드에서만 사용되는 R14_irq 레지스터에 인터럽트가 발생한 주소에 0x8를 더해 저장합니다. IRQ 인터럽트가 발생할 시점에 실행된