2017-05-14 1 views
0

저는 최근에 어셈블리를 연구 중이므로 예외가 어떻게 작동 하는지를 이해할 수 없습니다. 좀 더 구체적으로, 예외 6이 발생하고 무시 된 메시지가 나타납니다. 누군가가 정확히 무슨 뜻인지 설명해 주시겠습니까? qtspim을 사용하고 있습니다.MIPS의 예외적 인 의미는 무엇입니까?

+0

Google 검색의 몇 초 후, 이것은 당신을 도울 수있는 시뮬레이터 (스핌) 것 같아요, 제가 손에서 봤던 몇 안되는 것들은 실제 하드웨어가 있어야 할 것입니다. 정렬되지 않은 액세스, 주소 공간 외부의 명령어 가져 오기 등 기본적으로 코드에 버그가 있습니다. 나는 이것이 스왑 포인트에 관해서는 알지 못한다. 어떤 명령이나 어드레스 등이 발생했는지 알려준다면, 무시하고 멈추지 않고 무시하고 멈추는 기능이있다. –

답변

0

예외는 하드웨어 또는 소프트웨어로 인해 발생한 것일 수 있습니다. 예외는 새로운 주소로 점프하는 예기치 않은 함수 호출과 같습니다. 프로그램에서 정의되지 않은 명령어 과 같은 오류 조건이 발생할 수 있습니다. 그런 다음 프로그램은 운영 체제 (OS)의 코드로 이동하여 프로그램을 종료 할 수 있습니다. 예외의 다른 원인으로는 0으로 나누기, 존재하지 않는 메모리 읽기, 하드웨어 오작동, 디버거 중단 점 및 산술 오버플로가 있습니다.

예외가 발생했을 때 프로세서는 예외의 원인과 PC 의 값을 기록합니다. 그런 다음 예외 핸들러 함수로 이동합니다. 예외 처리기는 예외의 원인 인 을 검사하고 적절하게 응답하는 코드 (일반적으로 OS)이며 예외가 발생하기 전에 이 실행 중이던 프로그램으로 돌아갑니다.

MIPS에서 예외 처리기는 항상 0x80000180에 있습니다. 예외가 발생하면 프로세서는 원인에 관계없이 항상이 명령 주소로 점프합니다.

MIPS 아키텍처는 원인 레지스터라는 특수 목적 레지스터를 사용하여 예외의 원인을 기록합니다.

MIPS는 다른 특수 목적 레지스터는 예외 발생시 PC의 값을 저장하는 예외 프로그램 카운터 (EPC)라고 이용한다. 프로세서는 예외를 처리하는 이후 EPC의 주소로 돌아갑니다. 이것은 jal 명령 중에 을 사용하여 이전의 값을 저장하는 것과 유사합니다.

관련 문제