ARM프로세서
Posts
75 posts[Arm프로세서] AAPCS: Armv7: 서브 루틴(함수)로 분기될 때 실행되는 어셈블리 명령어
Armv7 아키텍처에 지원하는 레지스터들 중에 AAPCS와 연관된 레지스터가 SP, LR 레지스터이듯이, 수 많은 Armv7의 어셈블리 명령어 중에 AAPCS와 연관된 명령어가 있습니다. AAPCS와 연관된 명령어의 목록은 다음과 같습니다. 표 6.3 AAPCS와 관련된 명령어 위 표에서 보이는 각 명령어를 소개하고 예제 코드를 분석하면서, 명령어의 동작 원리를 배워봅시다. [참고]영어 단어를 처음 접할 때 사전을 열고 단어의 정의를 찾아 봅니다. 그런데 영어 단어의 정의만 알고는 단어를 제대로 안다고 볼 수 없습니다. 단어가 실제 어떻게 쓰이는지 알아야 그 단어를 제대로 안다고 볼 수 있습니다. 어셈블리 명령어도 마찬가지입니다. 배우려는 어셈블리 명령어가 어떤 함수나 레이블에서 사용되는지 알아야
[Arm프로세서] AAPCS: Armv7: 함수를 호출하기 위한 디자인
Armv7 아키텍처 관점으로 AAPCS를 보통 SP 레지스터와 LR 레지스터가 어떻게 바뀌는지 기준으로 설명합니다. 하지만 실제 거의 대부분 임베디드 혹은 시스템 개발자들은 SP와 LR 레지스터를 설정하는 어셈블리 코드를 입력하지 않습니다. 그 이유는 대부분 C 프로그래밍으로 코딩을 하기 때문입니다. SP와 LR 레지스터를 보면 낯설게 느끼기 마련입니다. 이번 절에서는 실제 함수를 호출하는 예시 코드와 함께, 함수를 호출하면 SP와 LR 레지스터가 어떻게 바뀌는지 알아보겠습니다. 함수를 호출될 때의 세부 동작 원리 파악하기 여러분이 다음과 같은 함수를 작성했다고 가정하겠습니다. 01 int add_func(int x, int y)02 {03 int result = x + y;04 prin
[Arm프로세서] Armv8: VBAR_ELx 기준으로 익셉션 벡터 테이블 분석 정리
이전 포스트까지 EL1에 존재하는 VBAR_EL1와 EL1에 있는 VBAR_EL2 기준으로 익셉션 벡터 테이블에 대해 알아봤습니다. 이제 원점으로 돌아가서 이번 절의 앞 부분에 소개한, Armv8 스팩 문서에 있는 익셉션 벡터 테이블을 보면서 배운 내용을 정리해봅시다. VBAR_EL1 기준으로 바라본 익셉션 벡터 테이블 먼저 VBAR_EL1 기준으로 익셉션 벡터 테이블을 분석해봅시다. 표 9.18 Armv8 아키텍처의 익셉센 벡터 테이블(출처: DDI0487Fc_armv8_arm.pdf) 표의 왼쪽 행의 2번째 열에 보이는 'Current Exception level'은 운영체제의 커널이 구동하는 EL1을 의미하며, EL1에서 익셉션이 유발되면 익셉션 벡터 베이스 주소에 아래와 같은 오프셋을 더한
[Arm프로세서] Armv7: 익셉션이 발생한 명령어로 어떻게 복귀할까?
ARM 코어가 파이프 라인의 어느 단계에서 어떤 방식으로 익셉션을 유발하는지 알면, 자연히 익셉션이 발생한 다음 명령어로 복귀하는 방법도 알게 됩니다. 다음 표를 보면서 이 내용을 정리해 봅시다. 표 8.3 익셉션의 종류 별로 익셉션이 발생한 순간으로 복귀하는 명령어 먼저, 표 8.3 2번째 줄에 있는 Undefined Instruction 익셉션이 유발된 명령어로 복귀하는 방법에 대해 알아봅시다. ARM 파이프 라인의 구조에서 Undefined Instruction 익셉션은 디코딩 단계에서 유발되는데 ARM 코어는 r14_und 레지스터에 익셉션이 유발된 다음 명령어의 주소를 넣어줍니다. 그래서 r14_und 레지스터의 값을 프로그램 카운터로 이동하면 Undefined Instruction 익셉션이


![[웹툰단행본] 『통제구역관리부』 1권 후기 : 이상한 변칙과 기이한 일들이 일어나는 공간에 대하여](https://img.zoomtrend.com/2026/06/09/1780996474-SE-5eda86fa-0d63-4afd-b8dd-b801879fed52.jpg)
