[ARM] ARMv7 아키텍처의 레지스터
By Guillermo Austin Kim | 2020년 9월 25일 |
ARMv7 아키텍처에서 사용되는 레지스터는 범용과 특별 용도 레지스터로 구분할 수 있습니다. 먼저 범용 레지스터에 대해 살펴봅시다. 다음은 ARM 스팩 문서에서 발췌한 내용입니다. 출처: DDI0406C_arm_architecture_reference_manual.pdf A2.3 ARM core registers In the application-level view, an ARM processor has:• thirteen general-purpose 32-bit registers, R0 to R12• three 32-bit registers with special uses, SP, LR, and PC, that can be described as R13 to R15. 위 내용은 "R0~R12
[라즈베리파이] 시스템 콜 - 커널 모드에서 시스템 콜을 어떻게 실행할까?
By Guillermo Austin Kim | 2018년 11월 19일 |
이번 절에서는 커널 공간에서 시스템 콜을 어떻게 실행하는지 살펴보겠습니다.다음 그림 전체 흐름도에서 검은색으로 표시된 부분을 눈여겨봅시다. 위 그림에서 검은색으로 된 부분입니다. 유저 공간에서 소프트웨어 인터럽트를 유발했으니 소프트웨어 인터럽트 벡터인 vector_swi 레이블이 실행합니다. 유저 공간에서 “svc 0x0” 이란 명령어를 실행하면 vector_swi 이란 시스템 콜 처리용 인터럽트 벡터로 프로그램 카운터를 이동하는 것입니다. 유저 공간에서 지정한 시스템 콜 번호는 r7 레지스터에 실려서 옵니다. 이 시스템 콜 번호를 통해 시스템 콜 테이블에 접근한 후 시스템 콜 핸들러로 분기합니다. ARM 프로세서 관점으로 시스템 콜을 실행하면 커널 공간에서 다음과 같은 동작을 수행합니다.1>
[ARM프로세서] ARMv7: 메모리 어보트 타입 익셉션의 실행 흐름
By Guillermo Austin Kim | 2020년 11월 23일 |
메모리 어보트 타입 익셉션이 발생하면 익셉션 핸들러에서 디버깅 정보를 출력하고 시스템을 리셋시킵니다. 소프트웨어적으로 시스템이 치명적인 오류가 있는 상태로 판단하기 때문입니다. 다음 그림을 보면서 메모리 어보트 타입 익셉션의 전체 실행 흐름을 알아봅시다. 그림 8.2 메모리 어보트 타입 익셉션이 발생할 때 전체 흐름 익셉션의 전체 실행 흐름도는 4단계로 분류할 수 있는데, 각 단계 별로 어떤 동작을 수행하는지 알아봅시다. 1단계: 프로세스가 실행하는 도중에 익셉션을 유발하는 명령어 실행 먼저 ①로 표시된 부분을 눈으로 따라가 봅시다. 프로세스가 메모리 어보트를 유발하는 명령어를 실행하는 부분입니다. 2단계: ARM 프로세서가 익셉션을 감지 ② 로 표시된 부분은 A
[Arm프로세서] AAPCS: Armv7: 브랜치 명령어(bl)
By Guillermo Austin Kim | 2021년 6월 10일 |
C 프로그래밍으로 함수를 호출하는 구문을 어셈블리 코드로 확인하면 'bl [심벌 주소]'와 같은 명령어가 보입니다. 이번 절에서는 bl 명령어의 정의를 소개하고, 예제 코드를 분석하면서 bl 명령어의 사용법을 살펴보겠습니다. bl 명령어란 이번에도 Arm 스팩 문서에서 bl 명령어를 설명하는 부분을 소개합니다. 5.4 Branches Calls to subroutines, where it is necessary for the return address to be stored in the link register, use the BL instruction.(출처: DEN0013D_cortex_a_series_PG.pdf) 위 내용은 "BL 명령어를 사용하면 서브 루틴을 호출하는데, 서브 루틴을 호출한