1
내가 읽은 이유는 프로그램이 이러한 레지스터를 사용할 수 있으며 보유한 값을 잃고 싶지 않기 때문입니다. 그러나이 경우 함수 호출에서 일반적으로하는 것처럼 이전 값을 스택에 쓸 수 있습니다. 그게 뭐가 잘못 됐니?왜 mips의 예외 핸들러가 레지스터를 덮어 쓸 수 없습니까?
편집 : $ k0, $ k1을 (를) 물론 등록하십시오!
내가 읽은 이유는 프로그램이 이러한 레지스터를 사용할 수 있으며 보유한 값을 잃고 싶지 않기 때문입니다. 그러나이 경우 함수 호출에서 일반적으로하는 것처럼 이전 값을 스택에 쓸 수 있습니다. 그게 뭐가 잘못 됐니?왜 mips의 예외 핸들러가 레지스터를 덮어 쓸 수 없습니까?
편집 : $ k0, $ k1을 (를) 물론 등록하십시오!
다른 레지스터도 사용할 수 있지만 전역 메모리에 저장해야합니다. 인터럽트 핸들러를 입력 할 수있는 이유는 손상된 스택 포인터로 인한 예외 때문일 수 있습니다. 따라서 레지스터는 정적으로 할당 된 전역 메모리에 저장됩니다.
그래, 나는 프로그램이 예외가 발생할 때 예측할 수 없다는 것을 이해합니다. 하지만 왜 예외 처리기 자체가 스택의 모든 레지스터를 저장하지 않고 주 프로그램에서 실제로 사용 된 레지스터와 관계없이 반환하기 전에이를 복원 할 수없는 이유는 무엇입니까? – user3740387
스택 포인터가 새 페이지로 이동하여 페이지 오류가 발생하면 어떻게됩니까? – markgz
사실 저는 현재 컴퓨터 아키텍쳐 과정을 밟고 있기 때문에 의심 스럽습니다. 우리는 아직 페이지 결함을 가르쳐주지 않았으므로 손상된 스택 포인터로 인해 발생하는 시나리오를 상상할 수 없습니다. user2684957 (나는 심지어 당신이 이야기하고 있다고 믿는다)에 의해 제공된 대답은 합리적인 것처럼 보입니다. 감사! – user3740387