책 암 시스템 개발자 안내서의 다음 예는 명령어 전에 STM
증가 다음에 명령어 후 LDM
감소가 표시됩니다.레지스터 그룹을 저장하고 나중에 복원하는 방법은 무엇입니까?
PRE r0 = 0x00009000
r1 = 0x00000009
r2 = 0x00000008
r3 = 0x00000007
STMIB r0!, {r1-r3}
MOV r1, #1
MOV r2, #2
MOV r3, #3
PRE(2) r0 = 0x0000900c
r1 = 0x00000001
r2 = 0x00000002
r3 = 0x00000003
LDMDA r0!, {r1-r3}
POST r0 = 0x00009000
r1 = 0x00000009
r2 = 0x00000008
r3 = 0x00000007
STMIB
명령은 값 7, 8, 9를 메모리에 저장합니다. 그런 다음 레지스터 r1에서 r3을 손상시킵니다. LDMDA
은 원래 값을 다시로드하고 기본 포인터 r0을 복원합니다.
그러나 r1, r2, r3의 메모리는 1,2,3으로 덮어 씁니다. 그런 다음 이전 값이 어떻게 복원됩니까? 이전 값은 어디에 저장됩니까?