T
Tolstiy
;переключаемся в защищенный режим
mov eax,cr0
or al,1
mov cr0,eax
;настраиваем регистры
db 0eah ;машинный код команды jmp
dw offset protect ;смещение метки перехода в сегменте команд
dw 30h ;селектор сегмента кода в таблице GDT
protect:
После перехода в защищенный режим, нужно проинициализировать сегментный регистр CS, это можно сделать выполнив команду дальнего перехода.
Вопрос 1: Зачем указывать явно код команды дальнего перехода, т.е. записывать команду дальнего перехода как последовательность данных?
В старших моделях процессоров Intel, можно написать команду косвенного дальнего перехода jmp dword ptr Address (где в переменной Address храниться селектор сегмента кода и смещение), в старых моделях мы так делать не могли. Удалось выяснить что это как то связанно с особенностями конвейера старших поколений процессоров Intel.
Вопрос 2: Чем отличаются конвейеры младших и старших поколений Intel, что появилось нового, за счет чего стало возможным выполнить такую команду сразу после перехода в защищенный режим? и из за чего на старых процессорах нельзя было так сделать?
И буду очень рад подробной информации и работе конвейеров процессоров Intel.