이 그림을 자세히보면 리얼 모드에서는 IA-32e 모드로 전환할 수 있는 방법이 없습니다. 전환 하려면 보호 모드를 거쳐서 전환해야 하지요. 실제로 Intel Architecture Manual Volume 3A의 9.8.5를 봐도 "The operating system must be in protected mode with paging enabled before attempting to initialize IA-32e mode"로 보호 모드를 거쳐야 한다고 나와있습니다.
위의 단계 중에서 6번은 리얼 모드에서 보호 모드로 전환하는 단계에서 하고, 나머지 6 가지는 보호 모드에서 수행하여 IA-32e 모드의 64비트 서브 모드로 전환합니다. But~!!! 리얼 모드에서 위의 7단계를 모두 수행해서 한번에 IA-32e 모드로 전환하는게 바로 Magic의 정체입니다. @0@)-b
과연 동작할까 싶지만, 실제로 동작하더군요. ㅎㄷㄷ 실제로 동작하는 코드는 http://bcos.hopto.org/temp/init.html에서 보실 수 있으며, 지나가다님이 작성하신 http://jsandroidapp.cafe24.com/xe/1936 에서도 보실 수 있습니다. ^^
정말 깜짝 놀랄 일이군요. ㅎㅎ 어떻게 이런 방법을 찾았는지... ㅎㅎ 세상에는 별별 사람들이 다 있는 것 같습니다. >ㅁ<)-b
'OS Kernel > MINT64 OS' 카테고리의 다른 글
Cygwin으로 64bit Binary가 생성가능한 Cross Compiler 만드는 방법 (21) | 2011.09.02 |
---|---|
Real Mode -> IA-32e Mode(Long Mode)로 바로 전환하는 예제 (10) | 2011.08.14 |
[이벤트] 64비트 멀티코어 OS 원리와 구조 리뷰어 이벤트~!!! (8월 1일까지~!! 지금 바로 신청하세요 ^^) (1) | 2011.08.01 |
MINT64 OS를 공개 프로젝트로 만들려는데, 어디다 올리는게 좋을까요? (17) | 2011.07.22 |
[출간] "64비트 멀티코어 OS 원리와 구조"의 부록 CD의 내용을 다운로드하세요~!! (12) | 2011.07.07 |