어 셈 블 리 언어 무효 명령 오류 개요

문제:cmpxchg8b 명령 은 8 바이트 값 ex 와 EAX 가 8 바이트 값 메모리(목적지 조작 수)를 가지 고 있 는 것 을 비교 합 니 다.이 명령 에 사용 할 유효한 목표 조작 수 만 메모리 조작 수 입 니 다.대상 작업 수가 레지스터 프로세서 라면 잘못된 OpCode 예외 가 발생 해 야 합 니 다.실 행 된 명령 cmpxchg8b 는 정지 하고 프로세서 가 잘못된 OpCode 이상 처리 프로그램 을 실행 해 야 합 니 다.이 오 류 는 cmpxchg8b 명령 과 하나의(유효 하지 않 음)레지스터 목적지 작업 수 를 잠 그 는 접두사 입 니 다.이 경우 프로세서 가 잘못된 OpCode 이상 처리 프로그램 을 시작 할 수 없습니다.버스 가 잠 겨 있 기 때 문 입 니 다.이것 은 시스템 이 걸 릴 것 이다.알림:레지스터 목적지 에서 cmpxchg8b 명령 과 잠 금 접 두 사 를 사용 하면 시스템 이 걸 릴 수 있 습 니 다.메모리 데이터 가 손상 되 지 않 았 습 니 다.사용 자 는 시스템 리 셋 을 실행 하여 정상 적 인 작업 으로 돌아 갈 수 있 습 니 다.특정한 무효 코드 서열 은 이 오류 가 발생 하면 보통 생 성 되 지 않 고 이 과정의 프로 그래 밍 도 이러한 서열 이 아니 므 로 상업 소프트웨어 를 사용 할 수 있 음 을 주의 하 십시오.이 오 류 는 펜 티 엄 프로세서,펜 티 엄 프로세서,MMX 기술,펜 티 엄 오 버 드라이브 프로세서,펜 티 엄 오 버 드라이브 프로세서 에 만 적용 된다.펜 티 엄 프로 프로세서,펜 티 엄 II 프로세서 와 i486 및 더 빠 른 버 전 프로 세 서 는 영향 을 받 지 않 습 니 다.변통 방법:이 오 류 는 모드 운영 체 제 를 보호 하기 위해 두 가지 변통 방법 이 있 습 니 다.변경 방법 은 두 사람 이 잘못된 OpCode 예외 상황 으로 페이지 오 류 를 생 성 합 니 다.상기 두 사례 에서 페이지 오 류 는 수리 전 무효 OpCode 를 예외 로 하여 잠 금 상태의 발생 을 방지한다.실시 세부 사항 은 운영 체제 에 달 려 있다.다음 방법 중 하 나 를 사용 하 십시오.첫 번 째 부분의 이 해결 방법 집의 첫 번 째 7 개 항목(0-6)은 설명 정보 표(IDT)를 비 쓰기 페이지 에 중단 합 니 다.잘못된 OpCode 이상(이상 6)이 발생 한 이 유 는 cmpxchg8b 명령 대 를 잠 그 고 목적 지 를 잘못 등록 한 다음 에 야)프로세서 가 페이지 오 류 를 생 성 합 니 다.이 페이지 에 항목 6 을 포함 하 는 IDT 를 기록 하지 않 으 면.의 두 번 째 부분 에서 이 해결 방법 은 페이지 오류 처리 프로그램의 인식 을 수정 하고'무효 OpCode 예외 상황'을 정확하게 스케줄 링 합 니 다.현재 배선 은 페이지 오류 처리 프로그램 을 통 해 이 루어 집 니 다.위 젯 I,IDT 페이지 가 태그 페이지 에 포 함 된 첫 번 째 7 개 항목(0-6)에 접근 하 는 IDT 는 설 정 된 위치 1 만 읽 는 페이지 목록 항목 이 0 입 니 다.cr0.wp(16 비트)를 1 로 설정 할 수도 있 습 니 다.현재"잘못된 OpCode 이상 잠 금 cmpxchg8b 명령 이 발생 하면 프로세서 가 페이지 오 류 를 발생 시 킵 니 다.이 페이지 에 항목 6 을 포함 하 는 IDT 를 쓰 지 않 았 기 때 문 입 니 다."이 페이지 오 류 는 버스 잠 금 상 태 를 막 고 운영 체제 에 완전히 제어 하 는 과정 에서'잘못된 조작 이상'입 니 다.예외 6 은 무효 OpCode 예외 이 므 로 이 그림 의 OS 와 완전히 제어 되 는 모든 프로그램 이 무효 cmpxchg8b 명령 을 실행 합 니 다.선택:항목 7-255 를 업데이트 하 는 IDT 가 과정 에서 정상적으로 작 동 할 경우 페이지 오 류 는 이 IDT 항목 을 쓰 는 것 을 피해 야 합 니 다.이 페이지 오 류 는 IDT 가 4KB 페이지 경 계 를 뛰 어 넘 는 것 을 피 할 수 있 습 니 다(예 를 들 어 첫 번 째 7 개 항목(0-6)의 IDT 는 첫 번 째'페이지 와'나머지 항목 만 읽 고 페이지 를 쓸 수 있 습 니 다.제2,페이지 오류 처리 프로그램 이 호출 용 처리 프로그램 을 수정 하여 어떤 이상 이 발생 했 는 지 계산 합 니 다.이 페이지 의 오 류 는 용량 주 소 를 cr2 로 사용 합 니 다.오류 코드 스 택 에 이상 이 발생 하면 진동 벨 0 과 주소 가 잘못된 OpCode 예외 에 대응 하면 팝 업 된 오류 코드 가 스 택 을 닫 고'잘못된 OpCode 이상 처리 프로그램'으로 이동 합 니 다.그렇지 않 으 면 정상 페이지 오류 처리 프로그램 을 계속 합 니 다.혹은 이 해결 방법 은 두 부분 이 있다.우선,설명 정보 표(IDT)정렬 을 중단 합 니 다(예 를 들 어 잘못된 OpCode 이상 은 페이지 오류(페이지 가 존재 하지 않 기 때 문).그 다음으로 페이지 오류 처리 프로그램의 날 짜 를 인식 하고 정확하게 예약 합 니 다.'잘못된 OpCode 이상 과 다른 예외 적 인 상황,현재 배선 은 페이지 오류 처리 프로그램 을 통 해 이 루어 집 니 다.위 젯 I,IDT 교정:중단 설명 정보 표(IDT)와 같은 것 을 정렬 하여 4KB 페이지 경 계 를 넘 어 첫 번 째 시작 56 바이트 를 최종 첫 번 째 4KB 페이지 에서 시작 합 니 다.이 는 첫 번 째 7 개 항목(0-6)을 첫 번 째 4KB 페이지 와 나머지 항목 을 두 번 째 페이지 에 표시 합 니 다.이 페이지 에 포 함 된 헤더 7 항목 IDT 는 OS 페이지 표 에 매 핑 될 수 없습니다.이것 은 어떠한 예외 도 0-6 페이지 를 만 드 는 데 고장 이 없 게 할 것 이다.한 페이지 오류 가 버스 잠 금 상 태 를 막 고 운영 체제 에 이러한 이상 을 완전히 제어 합 니 다.예외 6 은 무효 OpCode 예외 이 므 로 이 그림 의 OS 와 완전히 제어 되 는 모든 프로그램 이 무효 cmpxchg8b 명령 을 실행 합 니 다.제2,페이지 오류 처리 프로그램 수정:접근 이 가리 키 는 첫 페이지 IDT 를 식별 하여 테스트 를 통과 한 용량 주소 cr2 에서.페이지 에 고장 이 없 으 며 다른 주소 에서 정상적으로 처리 할 수 있 습 니 다.페이지 가 고장 나 지 않 습 니 다.첫 페이지 에 있 는 IDT 는 운영 체제 가 이상 을 식별 하고 보 내야 이 페이지 가 고장 나 지 않 습 니 다.계속 하기 전에 고장 주 소 는 cr2 로 주소 범위 에 해당 하 는 예외 상황 0-6 여 부 를 확인 합 니 다.어떤 이상 으로 인해 이 페이지 에 고장 이 없 는 여유 주소 cr2 가 존재 하 는 지 계산 합 니 다.운영 체제 에 따라 일부 권한 등급 검사 가 요구 되 고 스 택 중단 을 조정 할 수 있 습 니 다.정상 처리 프로그램 으로 이동 하 는 것 이 적당 한 이상 입 니 다.두 가지 변 칙 방법 은 인텔 프로세서 가 family=5 를 통 해 CPUID 명령 을 되 돌려 주 는 것 만 실현 해 야 한다.

좋은 웹페이지 즐겨찾기