EABI 임베디드 PowerPC 응용 프로그램에서 0x500 외부/감소 자 예외를 처리하는 어셈블러 루틴을 작성하고 있습니다.PowerPC에서 외부 예외를 처리 할 때 r1 스택 포인터 사용
내 어셈블러 루틴은 0x500 벡터 점에서 호출하여 'C'에서 핸들러 함수로 분기하기 전에 컨텍스트 저장 레지스터에 일부 메모리를 사용하려고합니다. I) 예외 모델은 이전 명령을하기 전에, 예외 핸들러가 호출 규칙은 먼저 새 기능을 입력에) 스택 포인터 (R1를 업데이트 표시) 및 II를 실행하는 시간에 완료됩니다 보장
때문에 새로운 스택 공간을 사용하여 옮긴 다음 (스택 포인터를 함수의 끝 부분에있는 마지막 위치로 다시 이동)
r1을 사용하면 더 많은 공간을 확보 할 수 있습니다. 예외 처리 루틴의 정상적인 스택은 명시 적으로 호출 규칙을 고수하고 스택을 다시 찾은 다음 SRR0과 SRR1이 수정되지 않았는지 확인합니다.
스택을 처리 할 때 스택을 사용하는 예외를 허용하지 않을 것입니다. 실제로이 방법을 사용하더라도 문제가 있을지는 확실하지 않습니다.
이것이 현명한 접근이라고 생각하십니까? 아니면 예외 처리를 위해 별도의 스택을 사용해야합니까? 나는 이것이 자신의 문제를 가져올지도 모른다라고 생각하고있다.
:-) 다행히 스택에 약 98 %의 여유 공간이 있습니다. 보드가 실행되도록 설계된 것보다 훨씬 간단한 프로그램입니다. – sparklewhiskers