익셉션
Posts
27 posts[ARM프로세서] ARMv7 익셉션(Exception)을 이루는 주요 개념
처음에 ARM 아키텍처의 익셉션을 공부할 때 익셉션 벡터 테이블을 이해하는데만 집중하는 분들이 많습니다. "ARMv7 아키텍처의 익셉션 동작 원리를 파악하려면 익셉션 벡터 테이블만 제대로 이해하면 된다"라고 생각하기 때문입니다. 하지만 익셉션 벡터 테이블의 내용만 익히면 배운 내용을 실전 프로젝트에 활용하기 어렵습니다. 왜냐면, 익셉션 벡터 테이블의 내용보다도 다음과 같은 사실을 파악하는게 더 중요하기 때문입니다. ❑ 익셉션은 소프웨어적으로 어떤 명령어가 실행될 때 유발될까? ❑ ARM 프로세서가 익셉션을 감지한 후 소프트웨어적으로 어떤 처리를 수행할까? 위에서 소개한 질문에 답을 하려면 다음 그림에서 소개한 익셉션을 구성하는 주요 개념에 대해 파악할 필요가 있습니
[ARM프로세서] 익셉션 벡터는 프로세스의 어느 공간에서 실행될까
프로세스 입장에서 익셉션을 유발하는 명령어를 실행하면 ARM 프로세서는 익셉션 벡터로 프로그램 카운터를 브랜치합니다. 이어서 익셉션를 처리하는 익셉션 벡터 핸들러가 실행됩니다. 그렇다면 익셉션 벡터에서 실행되는 익셉션 벡터 핸들러는 실제 어느 공간에서 실행될까요? 익셉션 벡터 핸들러는 바로 프로세스의 스택 공간에서 실행됩니다. 이번 시간에 이 내용에 대해 조금 더 설명합니다. 익셉션 벡터 핸들러가 프로세스의 스택 공간에 처리 다음 그림은 프로세스의 스택 공간에서 익셉션 벡터 핸들러가 호출되는 흐름을 나타냅니다. 그림 7.8 익셉션 벡터 핸들러가 프로세스 스택 공간에서 실행되는 흐름(ARMv7 아키텍처) 위 그림은 이전 절에서 소개한 proc_func_ptr() 함수가 seq_read() 함수
[ARM] 익셉션이 발생하면 프로세스는 어떻게 동작할까 - ARMv8
이번에는 64비트 기반 ARMv8 아키텍처 기준으로 proc_func_ptr 함수의 코드를 봅시다. 01 ffffff8008106d7c :02 ffffff8008106d7c: d10083ff sub sp, sp, #0x2003 ffffff8008106d80: f90007e0 str x0, [sp,#8]04 ffffff8008106d84: b90017ff str wzr, [sp,#20]05 ffffff8008106d88: f94007e0 ldr x0, [sp,#8]06 ffffff8008106d8c: f9000fe0 str x0, [sp,#24]07 ffffff8008106d90: f9400fe0 ldr x0, [sp
[ARM] 익셉션이 발생하면 프로세스는 어떻게 동작할까 - ARMv7
많은 학생이나 SW 개발자들은 "ARM의 익셉션 벡터 테이블을 열심히 읽어도 잘 모르겠다", 혹은 "무슨 내용인지 와 닿지 않는다"라는 불만을 토로합니다. 또한 "ARM 익셉션의 개념이 어렵다"라고 말하기도 합니다. 그 이유에 대해 곰곰히 생각해 봤는데, 소프트웨어 관점으로 익셉션이 무엇인지 분석하지 않았기 때문이라는 결론에 이르게 됐습니다. 여기서 말하는 소프트웨어란 용어는 조금 애매하고 추상적인 의미를 내포하는듯 합니다. 그런데 소프트웨어란 용어를 구체적으로 표현하면 "운영체제의 프로세스"라고 말할 수 있습니다. 소프트웨어 개발자가 입력한 코드는 CPU에 가까운 어셈블리 명령어로 실행되는데, 이를 실행하는 주인공은 프로세스이기 때문입니다. 익셉션이 발생하면 프로세스는 어떻게 동작할까요? 어떤 익셉션



