스택 포인터가 원래 위치로 다시 이동했지만 스택에 저장된 값이 메모리에서 레지스터 파일로 다시로드되지 않으면 어떻게됩니까? 스택 포인터가 뒤로 이동하면 값이 스택 메모리에 계속 남아 있습니다.스택 포인터가 뒤로 이동했지만 레지스터 파일에 값이로드되지 않았습니까?
0
A
답변
0
스택 포인터 ($ sp)는 이름을 가리키는 포인터로서 주소를 가리 킵니다.
의 이것이 우리의 기억하고 beggining의 $ 특검팀에 있다고 가정 해 봅시다은 ADRESS을 보유하고 "0x..01"
... | 0x..01 | 0x..02 | 0x..03 | ...
sw $a0,0($sp)
# 가기 제 $의 SP adress은 오프셋에서 $ A0의 값 (이 예에서는 0x..01이다)
addi $sp,$sp,4
#에 $ SP 이동
이제 우리는 무엇이 있는지 살펴 보겠습니다. $ sp0는 두 번째 줄에서 값을 변경했기 때문에 0x..01을 더 이상 가리키지 않지만 $ a0의 값은 여전히 0x..01에 저장됩니다. 그 다음에 다른 sw 명령을 쓰면 새 값이 $ sp의 새 주소에 저장됩니다.
총계 : $ sp는 현재 셀의 주소를 유지합니다. $ sp를 변경하면 $ sp가 가리키는 부분 만 변경됩니다.
아무 일도 일어나지 않으며, 당신이 설명하는 것을하는 것이 타당합니다. 스택 포인터를 한 방향으로 이동하여 스택에 메모리를 할당 한 다음 스택 포인터를 반대 방향으로 이동하여 해당 메모리를 해제합니다. – Michael