ARM REgister의 주요용도[펀글]
ARM Registers
General-purpose registers
32 bits in size
Data 나 주소를 저장
18 active registers in user mode
16 data registers : r0 to r15
2 processor status registers : cpsr, spsr
프로세서의 모드에 따라 프로그래머가 사용할 수 있는 register가 다르다.
32 bits in size
Data 나 주소를 저장
18 active registers in user mode
16 data registers : r0 to r15
2 processor status registers : cpsr, spsr
프로세서의 모드에 따라 프로그래머가 사용할 수 있는 register가 다르다.
r0-r3
Argument, result, scratch
r0-r3의 내용이 다시 필요하면 calling routine이 r0-r3의 내용을 보존하여야 함.
Argument, result, scratch
r0-r3의 내용이 다시 필요하면 calling routine이 r0-r3의 내용을 보존하여야 함.
r4-r7
Variable register (ARM 과 Thumb 양쪽)
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
Variable register (ARM 과 Thumb 양쪽)
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
r8
ARM variable register
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
ARM variable register
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
r9
ARM variable register
Read-Write Position Independence에서 static base (sb) register
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
r10
ARM variable register
Stack check이 일어날 때 stack limit (sl) potinter
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
ARM variable register
Read-Write Position Independence에서 static base (sb) register
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
r10
ARM variable register
Stack check이 일어날 때 stack limit (sl) potinter
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
r11
ARM variable register
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
ARM variable register
Called routine이 이 register를 사용하였다면, 돌아가기 전에 그 내용을 복원하여야 한다.
r12
ARM variable register (ip, intra-procedure-call scratch register)
Procedure linkage veneer (ARM-Thumb)에 사용
Called routine이 이 register를 사용하였더라도, 돌아가기 전에 그 내용을 복원할 필요가 없다.
ARM variable register (ip, intra-procedure-call scratch register)
Procedure linkage veneer (ARM-Thumb)에 사용
Called routine이 이 register를 사용하였더라도, 돌아가기 전에 그 내용을 복원할 필요가 없다.
r13
Stack pointer (sp)
현재 프로세서 모드의 stack top을 가리킨다.
Called routine의 exit에서 이 register의 값은 entry에서 값과 같아야 한다.
Stack pointer (sp)
현재 프로세서 모드의 stack top을 가리킨다.
Called routine의 exit에서 이 register의 값은 entry에서 값과 같아야 한다.
r14
Link register (lr)
Subroutine을 부를 때 return address를 저장한다.
Return 주소를 메모리에 저장하면 이 register를 자유로이 사용할 수 있다.
Link register (lr)
Subroutine을 부를 때 return address를 저장한다.
Return 주소를 메모리에 저장하면 이 register를 자유로이 사용할 수 있다.
r15
Program counter (pc)
프로세서에 의해 fetch될 다음 instruction 주소를 가진다.
다른 용도로 사용할 수 없다.
Program counter (pc)
프로세서에 의해 fetch될 다음 instruction 주소를 가진다.
다른 용도로 사용할 수 없다.
주의
r13 과 r14 는 general-purpose register로도 쓰일 수 있다.
하지만, r13 을 general-purpose register로 쓰는 것은 위험하다.
OS는 r13 가 항상 유효한 stack frame을 가리키는 것으로 가정한다.
r13 과 r14 는 general-purpose register로도 쓰일 수 있다.
하지만, r13 을 general-purpose register로 쓰는 것은 위험하다.
OS는 r13 가 항상 유효한 stack frame을 가리키는 것으로 가정한다.
댓글 없음:
댓글 쓰기