2013-06-30 4 views
1

이것은 테스트의 질문입니다. 가능한 답변은 다음과 같습니다."디버그 인터럽트"와 int 80h의 차이점은 무엇입니까?

(a) Debug interrupt is always caused by an error, and int 80h isn't. 
(b) Only on int 80h the returning address is saved. 
(c) int 80h is always caused by an error and debug interrupt isn't. 
(d) None of the above. 

내가 긍정적 인 점은 (c) 잘못된 것입니다.

둘 사이의 차이점에 대해 알려주시겠습니까?

+0

"디버그 인터럽트"가 무엇인지 알지 못합니다. 알고있는 용어에 대한 표준적인 의미가 없습니다. 'int 80h '는 운영체제마다 다릅니다. – interjay

+0

"디버그 인터럽트"로 추측합니다. OP는'int 3h'을 의미합니다. 또한, (b)는 * 모든 인터럽트가 반환 주소를 저장하기 때문에 잘못되었다는 것을 확신 할 수 있습니다. –

+0

@DrewMcGowen : 'int 1'또는 페이지 오류와 같은 예외 인터럽트를 참조하거나 제로. – interjay

답변

3

디버그 인터럽트는 항상 오류에 의해 발생하고, INT의 80H하지

디버그 인터럽트가 거의 항상 의도적으로 코드에 삽입되어 있습니다. 인라인 어셈블리, __debugbreak와 같은 코드의 내장 또는 디버거를 사용하여 프로세서가 명령문 시작 부분에있을 때 디버그 중단을 호출하도록합니다. int 03h가 x86 및 x64 프로세서에서 인코딩되는 방식으로 강력하게 활성화 된이 명령어는 단일 바이트 (CCh)를 사용하므로 디버거에서 삽입하기가 매우 쉬운 명령어입니다. INTO는 다른 괴짜이고 나머지는 2 바이트입니다. 오류와 아무 관련이 없으므로 없습니다. 오직 리턴 어드레스 80H INT에

모든 소프트웨어가 동일한 방식으로 인터럽트

프로세서 취급 저장된 인터럽트 번호는 단순히 인터럽트 핸들러를 선택한다. Int 03h는 반환 주소를 스택에 저장하므로 No입니다.

INT의 80H는 항상 오류로 인해 발생 및 디버그 인터럽트 그것은 전적으로있는 int 80H가 할 수있는 어떤 운영 체제에 따라 다릅니다

없습니다. 그러나 이것은 거의 Linux를 가리키며 int 80h를 사용하여 커널 모드로 전환하여 저수준 운영 체제 기능을 호출합니다. 그것들은 물론 오류가 아니기 때문에 아닙니다.

어느 것이 남았습니까? (d) 위의 어느 것도 없습니다.

관련 문제