2007년 03월 14일
레지스터
레지스터

레지스터 종류

뱅크 레지스터
프로세서가 특정 모드에 있을 때만 사용가능한 레지스터
프로세서 모드
어떤 레지스터가 활성화되고 cpsr 레지스터를 Access 할 수 있는 권리를 같게 될지를 결정
1개의 일반모드( user ), 6개의 특권모드 ( abort, FIQ, IRQ, superviser, system, undefined )
Stack Pointer ( SP or R13 )
프로그램에서 사용하는 스캑의 위치를 저장하는 레지스터
프로세서의 동작 모드마다 별도로 할당된 SP를 가지고 있다.
ARM은 별도의 Stack 명령이 없다 - LDR/STR, LDM/STM과 같은 데이터 명령으로 Stack처리
Link Register ( LR or R14 )
서브루틴에서 되돌아갈 위치 정보를 저장하고 있는 레지스터
Program Counter ( PC or R15 )
프로그램을 수행하는 위치를 저장하고 있는 레지스터
프로세서의 모든 동작모드에 대하여 하나만 존재 한다
프로세서가 작업을 하는데 사용되는 값을 저장하는 공간
ARM에는 32비트 길이의 37개 레지스터가 있다.

레지스터 종류
1. 30개의 범용( General Purpose ) 레지스터
//대부분의 데이터 연산에 사용
//프로세서의 동작( Operating ) 모드에 따라 사용되는 레지스터가 제한된다
2. 1개의 프로그램 카운터 ( PC : Program Counter )
//프로그램을 읽어올 메모리의 위치를 나타낸다
3. 1개의 CPSR ( Current Program Status Register )
//프로세서가 수행하고 있는 현재의 동작 상태를 나타낸다
4. 5개의 SPSR ( Saved Program Status Register )
//이전모드의 CPSR 의 복사본
//Exception 이 발생하면 하드웨어적으로 이전모드의 CPSR값을 각각의 모드에 해당하는 SPSR에 복사
//System 모드를 제외한 모든 Privilge(특권) 모드에 각각 하나씩 존재

뱅크 레지스터
프로세서가 특정 모드에 있을 때만 사용가능한 레지스터
프로세서 모드
어떤 레지스터가 활성화되고 cpsr 레지스터를 Access 할 수 있는 권리를 같게 될지를 결정
1개의 일반모드( user ), 6개의 특권모드 ( abort, FIQ, IRQ, superviser, system, undefined )
Stack Pointer ( SP or R13 )
프로그램에서 사용하는 스캑의 위치를 저장하는 레지스터
프로세서의 동작 모드마다 별도로 할당된 SP를 가지고 있다.
ARM은 별도의 Stack 명령이 없다 - LDR/STR, LDM/STM과 같은 데이터 명령으로 Stack처리
Link Register ( LR or R14 )
서브루틴에서 되돌아갈 위치 정보를 저장하고 있는 레지스터
서브루틴을 호출하는 BL 명령을 사용하면 PC값을 자동으로 LR에 저장프로세서의 동작 모드마다 별도로 할당된 LR 레지스터를 가지고 있다
되돌아 갈때는 MOV 명령을 이용하여 LR 값을 PC에 저장 -- MOV PC, LR
ADD 나 SUB와 같은 연산명령을 사용하여 되돌아갈 위치를 조정할 수도 있음
Program Counter ( PC or R15 )
프로그램을 수행하는 위치를 저장하고 있는 레지스터
ARM State : 위치정보 [31:2] 저장다른 범용 레지스터와 마찬가지로 ADD, SUB와 같은 연산 명령 사용 분기 위치 조정가능
Thumb State : 위치정보 [31:1] 저장
프로세서의 모든 동작모드에 대하여 하나만 존재 한다
# by | 2007/03/14 00:17 | Arm Architecture | 트랙백




