ARMV7

포스트: 18|조회수: 0|ARTIFACT
Items

Posts

18 posts

[Arm프로세서] Armv7: 익셉션 벡터 테이블이란

Guillermo Austin Kim|2020년 12월 23일

익셉션이 발생하면 ARM 프로세서는 익셉션 별로 지정된 주소로 프로그램 카운터를 브랜치합니다. 익셉션 별로 지정된 주소를 익셉션 벡터라고 하는데, 익셉션 벡터는 8개의 연속된 4바이트 단위의 주소로 구성돼 있습니다. 이 8개의 익셉션 벡터를 익셉션 벡터 테이블이라고 합니다. 먼저 다음 표를 보면서 익셉션 벡터 테이블을 배워 봅시다. 표 8.4 익셉션 벡터 테이블 표의 왼쪽 행은 익셉션 벡터 베이스 주소 기준의 오프셋인데, 오른쪽 행을 보면 오프셋 별에 대응되는 익셉션의 종류가 보입니다. 이로써, 익셉션 벡터의 주소는 익셉션의 종류에 따라 다르다는 점을 확인할 수 있습니다. 가장 왼쪽 행의 윗 부분은 '익셉션 벡터 테이블의 베이스' 주소인데, 먼저 이 내용부터 알아봅시다. ARM 프로세서는 익셉션의

[Arm프로세서] Armv7: 익셉션이 발생한 명령어로 어떻게 복귀할까?

Guillermo Austin Kim|2020년 12월 21일

ARM 코어가 파이프 라인의 어느 단계에서 어떤 방식으로 익셉션을 유발하는지 알면, 자연히 익셉션이 발생한 다음 명령어로 복귀하는 방법도 알게 됩니다. 다음 표를 보면서 이 내용을 정리해 봅시다. 표 8.3 익셉션의 종류 별로 익셉션이 발생한 순간으로 복귀하는 명령어 먼저, 표 8.3 2번째 줄에 있는 Undefined Instruction 익셉션이 유발된 명령어로 복귀하는 방법에 대해 알아봅시다. ARM 파이프 라인의 구조에서 Undefined Instruction 익셉션은 디코딩 단계에서 유발되는데 ARM 코어는 r14_und 레지스터에 익셉션이 유발된 다음 명령어의 주소를 넣어줍니다. 그래서 r14_und 레지스터의 값을 프로그램 카운터로 이동하면 Undefined Instruction 익셉션이

[ARM프로세서] ARMv7 익셉션(Exception)을 이루는 주요 개념

Guillermo Austin Kim|2020년 11월 18일

처음에 ARM 아키텍처의 익셉션을 공부할 때 익셉션 벡터 테이블을 이해하는데만 집중하는 분들이 많습니다. "ARMv7 아키텍처의 익셉션 동작 원리를 파악하려면 익셉션 벡터 테이블만 제대로 이해하면 된다"라고 생각하기 때문입니다. 하지만 익셉션 벡터 테이블의 내용만 익히면 배운 내용을 실전 프로젝트에 활용하기 어렵습니다. 왜냐면, 익셉션 벡터 테이블의 내용보다도 다음과 같은 사실을 파악하는게 더 중요하기 때문입니다. ❑ 익셉션은 소프웨어적으로 어떤 명령어가 실행될 때 유발될까? ❑ ARM 프로세서가 익셉션을 감지한 후 소프트웨어적으로 어떤 처리를 수행할까? 위에서 소개한 질문에 답을 하려면 다음 그림에서 소개한 익셉션을 구성하는 주요 개념에 대해 파악할 필요가 있습니

[ARM] 함수 호출 규약(Calling Convention)이란

Guillermo Austin Kim|2020년 9월 27일

호출 규약(Calling Convention)이란 무엇일까요? 어떤 함수를 호출했을 때 서브 루틴이 자신을 호출하는 함수로부터 인자를 어떤 방식으로 받아 결과를 반환하는지에 대한 규약입니다. x86, RISC-V와 같은 CPU 아키텍처마다 함수 호출 규약(Calling Convention)을 정의하는데, ARM 프로세서에서는 이를 AAPCS(Procedure Call Standard for ARM Architecture)라고 명시합니다. 앞으로, AAPCS를 함수 호출 규약이라고 명시하겠습니다. 연산을 수행하는 ARM 어셈블리 명령어에서 레지스터는 연산의 결과를 임시로 저장하는 역할에 그칩니다. 그래서 각각 레지스터의 역할을 세세하게 배울 필요가 없는데요. 함수 호출 규약을 배울 때는 다릅니다. 그것은 다