Intel Developer Manual은 보호 모드로 전환 한 후 MOV CR0 명령이 실행 흐름을 변경하고 프로세서를 직렬화 한 직후 JMP 또는 CALL 명령을 즉시 수행 할 것을 제안합니다. 9 장에서 코드 예제에 의해 제안 목적은, 프리 페치 큐를 무효화 절 9.10.2, START.ASM Listing
, 라인 174-186입니다 :보호 모드로 들어가도 프리 페치 큐를 무효화해야하는 이유는 무엇입니까?
174 ; enter protected mode
175 MOV EBX,CR0
176 OR EBX,PE_BIT
177 MOV CR0,EBX
178
179 ; clear prefetch queue
180 JMP CLEAR_LABEL
181 CLEAR_LABEL:
182
183 ; make DS and ES address 4G of linear memory
184 MOV CX,LINEAR_SEL
185 MOV DS,CX
186 MOV ES,CX
왜 우리는 이러한 작업을 수행해야 하는가? 같은 코드를 다시 점프하기 위해 프리 페치 대기열의 현재 데이터를 무효화하는 것을 제외하고는 그와 같은 짧은 점프가 플래그 또는 세그먼트를 전혀 변경하지 않기 때문에 코드가 대기열에서 동일하게 유지되지 않습니까?
점프해야하며 주 목적은 'CS'를로드하는 것입니다. 매뉴얼이 가까운 점프를 사용한다는 것이 이상합니다. 표 9-4는 이렇게 말합니다 :'실제 모드 명령 대기열에 가깝게 뛰기 ' – Jester
예 멀리 점프가 나중에 수행됩니다. 그러나 보호 모드로 전환 한 직후 가까운 점프를 먼저 사용하는 것이 좋습니다. – Amumu
프리 페치 대기열에서 보호 모드 코드를 다시로드하기위한 것 같습니다. 그러나 나는 왜 같은 코드를 다시로드해야하는지 이해하지 못하고있다. – Amumu