Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
16-32 простенький вопросец 11.02.02 10:03
Автор: PS <PS> Статус: Elderman
|
ПРи переходе из реального режима в защищенный какие нибудь дополнительные телодвижения нужны или просто следующие после перехода инструкции должны быть 32х разрядными ?
Типа:
USE16 486
mov ax, bx
;тут переход
USE32 486
mox eax, ebx
Т.е. после перехода исполняется следующая инструкция, или не все так просто ?
|
 |
Спасибо всем 11.02.02 12:55
Автор: PS <PS> Статус: Elderman
|
XR за подробное описание
:) за ссылки - давно такие искал.
|
 |
16-32 простенький вопросец 11.02.02 10:25
Автор: XR <eXtremal Research> Статус: The Elderman
|
> ПРи переходе из реального режима в защищенный какие нибудь > дополнительные телодвижения нужны или просто следующие > после перехода инструкции должны быть 32х разрядными ? > Типа: > USE16 486 > mov ax, bx > ;тут переход > USE32 486 > mox eax, ebx > > Т.е. после перехода исполняется следующая инструкция, или > не все так просто ? Не все так просто :)
1) Дизаблим прерывания
cli
cld
2) Дизаблим немаскируемые прерывания (это делают через порты навскидку не помню - надо смотреть)
3) Включаем линию A20
4) Грузим LDT (lgdt [gdt])
5) Переходим в PM (mov cr0,...) ... с установкой всяких разных доп флагов (сходу не помню подробности)
6) Устанавливаем селектор
7) Устанавливаем стек
8) И вот только сейчас прыгаем на 32 битный код
Вроде бы так - если мне склероз не изменяет :)
|
 |  |
Это описание перехода 11.02.02 11:10
Автор: PS <PS> Статус: Elderman
|
> > 1) Дизаблим прерывания > cli > cld > > 2) Дизаблим немаскируемые прерывания (это делают через > порты навскидку не помню - надо смотреть) > 3) Включаем линию A20 > 4) Грузим LDT (lgdt [gdt]) > 5) Переходим в PM (mov cr0,...) ... с установкой всяких > разных доп флагов (сходу не помню подробности) > 6) Устанавливаем селектор > 7) Устанавливаем стек > 8) И вот только сейчас прыгаем на 32 битный код > Спасибо, но меня интересует пункт 8. О нем поподробней можно ?
|
 |  |  |
Это описание перехода 11.02.02 11:41
Автор: XR <eXtremal Research> Статус: The Elderman
|
> > > > 1) Дизаблим прерывания > > cli > > cld > > > > 2) Дизаблим немаскируемые прерывания (это делают через > > порты навскидку не помню - надо смотреть) > > 3) Включаем линию A20 > > 4) Грузим LDT (lgdt [gdt]) > > 5) Переходим в PM (mov cr0,...) ... с установкой > всяких > > разных доп флагов (сходу не помню подробности) > > 6) Устанавливаем селектор > > 7) Устанавливаем стек > > 8) И вот только сейчас прыгаем на 32 битный код > > > Спасибо, но меня интересует пункт 8. О нем поподробней > можно ?
Там все предельно просто ...
(используя нотацию nasm)
use16
Первые 5 пунктов
....
6)
mov ax,data ;
mov ds,ax
mov es,ax
mov fs,ax
mov gs,ax
mov ss,ax
7)
mov esp, dword [стек]
8)
jmp pword code:b32code
...
use32
b32code:
пошел 32 битный код
PS: Из простенького можешь посмотреть код menuetOS
http://menuetos.org
или linux (/usr/src/linux/arch/i386/boot/setup.S) но там он ImHO более сложный и запутанный ну и нотация там AT&T
|
|
|