[Arm프로세서] Armv7: subs와 movs 명령어를 실행해 Arm 동작 모드 변경
By Guillermo Austin Kim | 2021년 10월 1일 |
Arm 동작 모드를 바꾸는 다른 방법은 spsr 레지스터의 [7:0] 비트를 변경하고 다음과 같은 형식의 명령어를 실행하는 것입니다. ❑ subs pc, lr, #4 ❑ movs pc, lr sub은 뺄셈 연산, mov는 레지스터의 값을 이동시키는 연산을 수행하는 명령어입니다. 그런데 위 명령어를 보면 각 명령어의 끝에 s와 같은 접미사가 있습니다. Arm 코어가 위와 같은 ‘subs’ 혹은 ‘movs’ 명령어를 보면 내부적으로 다음과 같이 실행합니다. ❑ spsr 레지스터의 값을 cpsr 레지스터에 백업하자. ❑ spsr 레지스터의 M[4:0]에 저장된 모드로 변경하자. 위와 같은 동작은 하드웨어적으로 수행됩니다. [중요]mov와
[Arm프로세서] 하이퍼바이저는 어디에 사용될까?
By Guillermo Austin Kim | 2022년 1월 23일 |
클라우드 아키텍처로 하이퍼바이저를 적용하는 제품이 점검 늘어나는 추세입니다. 이번 절에서는 하이퍼바이저는 어느 제품군에 활용되는지 소개하겠습니다. 오토모티브(Automotive): 전기 자동차 먼저 오토모티브 분야에서 하이퍼바이저는 많이 활용됩니다. 특히 자동차의 계기판과 네비게이션 부품으로 구성되는 인포테이먼트 분야에서는 자동차 고객사가 하이퍼바이저를 소프트웨어 아키텍처로 선택하고 있습니다. 그렇다면 하이퍼바이저는 인포테이먼트 분야에서 어떻게 활용될까요? 다음 그림과 같이 운전자 입장에서 높은 안정성이 요구되는 계기판은 보안성이 높은 RTOS을 실행하고, 네비게이션은 범용적인 안드로이드나 네이티브 리눅스를 실행할 수 있습니다. 그림 12.2 하이퍼바이저가 사용되는 사례 다양한 시장 조사 보고서에
[Arm프로세서] Armv7: 범용 레지스터에서 뱅크드 레지스터란
By Guillermo Austin Kim | 2022년 4월 18일 |
그림 2.1의 아랫 부분을 보면 r13_svc와 r14_svc 라는 레지스터가 보입니다. 오른쪽에는 r13_irq와 r14_irq 레지스터가 보입니다. 이런 종류의 레지스터의 정체는 무엇일까요? Arm 동작 모드에 뱅크드된 레지스터라고 합니다. 뱅크드 레지스터를 주로 기계적인 관점으로 설명해서 소프트웨어 개발자가 이해하기 어렵습니다. 이해를 돕기 위해 다음과 같은 명령어를 봅시다. sub, sp, sp, #4 sp 레지스터인 r13 레지스터의 값을 4만큼 빼는 명령어입니다. 여기서 sub은 뺄셈 연산 명령어입니다. 위와 같은 명령어를 실행하면 그림 2.1기준으로 어느 레지스터의 값이 업데이트될까요? r13의 종류는 r13_svc, r13_irq, r13_abt 이니, 이 중 하나입니다. ‘sub
[ARM] ARM 프로세서는 어떻게 공부해야 할까?
By Guillermo Austin Kim | 2020년 9월 20일 |
이제까지 ARM 프로세서를 공부하는 방법의 문제점에 대해 설명했습니다. 이어서 ARM 프로세서를 효율적으로 공부하는 방법에 대해 소개합니다. 디버깅을 하면서 ARM 어셈블리 명령어를 익힌다 GDB와 같은 프로그램을 통해 실습을 하면서 ARM 어셈블리 명령어를 배울 필요가 있습니다. 어셈블리 명령어 한 줄 한 줄을 실행할 때 결과를 직접 확인하면서 실습을 하면 배운 내용이 더 오랫동안 남습니다. 이 책에서 ARM 어셈블리 명령어의 동작 원리와 함께 명령어를 실습할 수 있는 방법을 소개합니다. 운영체제의 기본 원리와 함께 ARM 아키텍처를 배운다 운영체제 커널의 기본 동작 원리를 ARM 프로세서의 내용과 함께 같이 공부해야 합니다. 이를 위해 ARM 프로세서의 주요 기능이 실제 프로젝트의 운영체제에서