적어도 인터럽트 처리기의 일부를 어셈블리 언어로 작성하는 이유는 무엇입니까?운영 체제의 인터럽트 처리기
3
A
답변
1
보통 에는이있어 어셈블리에서 인터럽트 루틴의 일부를 작성합니다. 많은 경우에 인터럽트는 단순히 프로세서를 특정 메모리 위치로 벡터화하고 그 지점에서 코드를 실행하기 시작하기 때문입니다.
귀하의 프로세서는 사용중인 상위 레벨의 루틴의 호출 규칙을 따르지 않을 것이므로이를 수정하고 더 높은 수준의 인터럽트 처리 코드를 호출 한 다음 일부 코드를 호출하여 인터럽트를 지우고 시스템을 정상 실행으로 복귀시키는 더 많은 어셈블리 코드. 예를 들어 인텔 칩에서 인터럽트로부터 돌아 가기 위해 프로세서가 iret
명령을 실행하게해야합니다. 고수준 언어로 표준 방식으로 할 수는 없습니다.
2
인터럽트 처리기는 항상 매우 낮은 수준의 환경에서 실행을 시작합니다. 프로그래밍 언어이지만 어셈블리에는 항상 시스템 라이브러리와 "런타임"이 필요합니다.
예를 들어 어셈블리 언어 외부에서 스택 포인터 레지스터를 조작하는 것은 쉽지 않습니다.
또한 ABI는 장벽입니다. 응용 프로그램 바이너리 인터페이스는 인터럽트 처리, 특히 컨텍스트 저장 및 복원에 너무 복잡합니다.
관련 문제
- 1. 운영 체제의 세마포어
- 2. 운영 체제의 모니터
- 3. 운영 체제의 지문 채취
- 4. 작은 운영 체제의 MASM
- 5. 임베디드 운영 체제와 데스크톱 운영 체제의 차이점
- 6. 인터럽트/인터럽트 처리기 이해, PIC
- 7. 운영 체제의 응답 시간 계산
- 8. 최신 운영 체제의 메모리 분할
- 9. 운영 체제의 라운드 로빈 알고리즘
- 10. 다른 운영 체제의 시맨틱 기술
- 11. 다중 운영 체제의 MySQL 데이터베이스
- 12. 운영 체제 인터럽트
- 13. x86 : 인터럽트 처리기 루프
- 14. 운영 체제의 대역폭 차이를 다운로드 하시겠습니까?
- 15. JVM 다른 운영 체제의 성능 차이
- 16. 운영 체제의 전체 시스템 스냅 샷
- 17. 다른 운영 체제의 동일한 웹 사이트
- 18. 운영 체제의 액세스를 계산하는 하드웨어 성능 카운터
- 19. 현대 운영 체제의 일반적인 스케줄링 시간 퀀텀
- 20. CodeSourcery CS3 인터럽트 처리기 재정의
- 21. 인터럽트 처리기 안에있는 printk는 정말 그렇게 나빴습니까?
- 22. 만들기 전화 응용 프로그램 모든 운영 체제의 맞은 편에
- 23. 운영 체제의 스케줄러를 누가 계획합니까? 닭고기 및 계란 시나리오가 아닙니까?
- 24. 운영 체제의 취약점이 데이터베이스 보안에 영향을 미칠 수 있습니까?
- 25. Recv() 32 비트와 64 비트 운영 체제의 동작 차이
- 26. POSIX 스타일 운영 체제의 명령 줄 옵션은 밑줄 형식이어야합니까?
- 27. Java 7에서 운영 체제의 룩앤필을 얻는 방법은 무엇입니까?
- 28. 높이가 다른 운영 체제의 iReport에서 다르게 표시되는 경우
- 29. 다른 운영 체제의 Oracle 클라이언트 및 Oracle 서버
- 30. 내 (소형) 임베디드 운영 체제의 안정성을 테스트하는 방법은 무엇입니까?
안녕하세요. 빠른 답장을 보내 주셔서 감사합니다. 나는 아침부터 대답을 위해 고심하고 있었다. .. – user1165418