인텔 매뉴얼 3A 6 장 인터럽트 및 예외 처리를 읽었습니다.소프트웨어 생성 인터럽트와 소프트웨어 생성 예외의 차이점은 무엇입니까?
인터럽트와 예외는 각각 3 소스를 가지고있다.
소프트웨어 생성됨 인터럽트를 들어, 메시지 :
INT 않음 명령 허가를 피연산자로 인터럽트 벡터 수를 공급하여 소프트웨어 내에서 생성되는 인터럽트. 예를 들어, INT (35)는 명령이 명령의 파라미터로 사용될 수 0 255에서 인터럽트 (35)는 인터럽트 벡터에 대한 상관 인터럽트 핸들러 암시 호 강제. 프로세서의 소정 NMI 벡터가 사용되는 경우는 통상의 방식으로 생성 인터럽트 NMI 로되는 바와 같이, 그러나, 의 반응은, 상기 프로세서는 동일하지 않을 것이다. 벡터 번호 2 (NMI 벡터)가이 명령어에 사용되면 NMI 인터럽트 핸들러는 이 호출되지만 프로세서의 NMI 처리 하드웨어는 활성화되지 않습니다. EFLAGS 레지스터에있는 INT 않음 명령어와 소프트웨어에서 발생하는 인터럽트 은 IF 플래그에 의해 마스킹 될 수 없다.
INTO, INT (3), 및 BOUND 명령 허가 예외 소프트웨어에서 생성 될 : 소프트웨어 생성 된 예외
, 그것은 말했다. 이 명령어는 명령어 스트림의 포인트에서 예외 조건이 수행되는지 확인합니다. 예제의 경우 INT 3은 중단 점 예외를 생성합니다. INT n 명령어는 소프트웨어에서 예외를 에뮬레이션하는 데 사용할 수 있습니다. 하지만 거기에 제한이 있습니다. INT n이 구조적으로 정의 된 중 하나의 벡터를 제공하는 경우 프로세서는 올바른 벡터에 대한 인터럽트를 생성하지만 (예외 처리기에 액세스하기 위해) 은 스택에서 오류 코드를 푸시하지 않습니다. 연관된 하드웨어가 정상적으로 생성 된 예외 에러 코드를 생성해도 마찬가지이다. 예외 처리기는 여전히 예외를 처리하는 동안 스택에서 오류 코드 을 팝하려고 시도합니다. 오류 코드가 푸시되지 않았기 때문에 처리기가 튀어 나와 대신 EIP를 삭제합니다 (누락 된 오류 코드의 자리에 있음). 그러면 잘못된 위치로 반송됩니다.
그래서, 차이점은 무엇입니까? 두 가지 모두는 int n
명령을 활용합니다. 어셈블리 코드에서 예외 또는 인터럽트를 생성하는지 여부를 어떻게 알 수 있습니까?
보호 모드 운영 체제를 쓰는 사람에게만 중요한 애매한 세부 사항입니다. 언급했듯이, 그는 n <32 인 INTn이 예외를 생성하거나 인터럽트 처리기가 오작동하는 것을보다 잘 방지해야합니다. 게이트가 링 전환 (일컬어 DPL