>

Protected Mode 진입

Study/Kenrel 2015. 9. 23. 13:48

GDT 로드 이후에 CR0의 최하위비트(PE비트) 를 1로 세트시켜야 Protected Mode로 진입하게 된다.

허나 세트하는 명령을 실행한 순간에도 CPU에서 그 다음 명령(16비트)이 해석 중에 있기 때문에 오류가 생길 수 있다. 그래서 이런 파이프라인을 해제하기 위해 jmp 문을 사용한다.

mov eax, cr0

or eax, 0x00000001

mov cr0, eax


jmp $+2

nop

nop


db 0x66

db 0x67

db 0xEA

dd PM_Start

dw SysCodeSelector

jmp 문 이후에 0x66 0x67 등 데이터들이 있는 것을 볼 수 있는데, 0x66 0x67은 prefix로 CPU에게 16비트 명령이 32비트로 바뀌었거나 그 반대의 경우를 알리는데 쓰는 표시이다.

즉 Protected Mode에서 JMP DWORD SysCodeSelector:PM_Start 의 명령을 수행하게 된다.

'Study > Kenrel' 카테고리의 다른 글

PIC 초기화  (0) 2015.09.24
IDT(Interrupt Descriptor Table)  (0) 2015.09.24
GDT(Global Descriptor Table)  (0) 2015.09.23
Segment & Offset  (0) 2015.09.21
Real Mode & Protected Mode  (0) 2015.09.21
Posted by Mungsul
,