강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이지수님의 프로필 이미지
이지수

작성한 질문수

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)

Armv7-A: 뱅크드 레지스터 변경 실습

유저 모드 뱅크드 레지스터 질문입니다

작성

·

15

0

armv7 뱅크드 레지스터 관련 trace32 실습을 하던 중 생긴 질문입니다. 해당 툴을 사용할 때 usr 모드의 R8-R14가 뱅크드 레지스터인 것 처럼 보입니다. 이 중 실습과 ARM 공식 문서를 통해 USR 모드 또한

R13과 R 14 를 뱅크드 레지스터를 갖는 것으로 판단했는데 맞는 건가요?

"The User, IRQ, Supervisor, Abort, and undefined modes each have two banked registers mapped to r13 and r14, allowing a private SP and LR for each mode."
ARM 문서 내용입니다.

실습의 경우 다른 동작 모드에서 USR 모드로 돌아올 때의 R13,14 값으로 뱅크드 레지스터처럼 동작하는 것을 확인했습니다.

답변 2

0

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

(늦게 답신 드려서 죄송합니다)

Armv7-A 아키텍처에서 유저 모드에 대한 뱅크드 레지스터는 R13, R14 입니다.

말씀드린 내용은 TRACE32로 실습을 하시면 확인하실 수 있습니다.

혹시 R8-R14가 뱅크드 레지스터라고 판단하신 근거를 알려주시면, 확인 후 답신 드리겠습니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 이지수님.

ARM 아키텍처에서의 뱅크드 레지스터에 대한 질문을 주셨네요. ARM 아키텍처에서는 특정 모드에서 사용되는 레지스터들이 다른 모드의 영향을 받지 않도록 ‘뱅크드’라는 개념을 도입하고 있습니다. 특히 R13과 R14는 여러 모드에서 뱅크드 레지스터로 동작합니다.

ARM의 뱅크드 레지스터 이해

  1. 뱅크드 레지스터란?

    • ARM 프로세서에서는 예외 상황이나 다른 특수한 동작 모드로 전환할 때, 작업의 연속성을 보장하기 위해 ‘뱅크드 레지스터’를 사용합니다.
    • 이는 각 모드에서 독립된 레지스터 세트를 사용하여 예외 처리나 인터럽트 발생 시 영향을 최소화합니다.
  2. R13과 R14의 뱅킹 특성:

    • R13(SP): 주로 스택 포인터로 사용되며, 예외와 같은 특별한 상황에서는 각 모드에 맞는 스택 포인터를 갖도록 뱅크됩니다.
    • R14(LR): 반환 주소를 저장합니다. 여러 모드에서 다른 LR 값을 갖도록 뱅크됩니다.
  3. 실험적 관찰:

    • USR(User) 모드에서도 R13과 R14가 뱅크드로 동작하여 다른 모드에서 복귀할 때 자신만의 상태를 유지할 수 있습니다.
    • 실습을 통해 관찰하신 바와 같이, USR 모드의 R13과 R14가 다른 모드의 영향 없이 독립적으로 유지되는 것을 확인할 수 있습니다.

관련하여 자세한 내용이 담긴 질문 및 답변을 다음에서 확인할 수 있습니다:

이 자료들이 이지수님의 이해를 돕는데 도움이 될 것입니다. ARM 아키텍처에 대한 더 깊은 이해가 필요하다면 문서와 강의 자료를 참고하고, 추가 질문이 있으시면 언제든지 문의해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이지수님의 프로필 이미지
이지수

작성한 질문수

질문하기