Size: a a a

2018 September 05

n

nomad in pro.osdev
👍
источник

R

Rabu in pro.osdev
ID:231505535
о, кстати, терри девис же умер
F
источник

d

disba1ancer in pro.osdev
@berkus скажи, вот если код у меня загружается и изначально настроен на адрес 0x10000 мне при включении страничной адресации лучше сохранить его адреса или как-то иначе лучше?
источник

BD

Berkus Decker in pro.osdev
проще всего оставлять, следующий по простоте переносить едро в high mem,
в любом случае тебе делать far jump чтобы селекторы сбросить
источник
2018 September 06

d

disba1ancer in pro.osdev
Berkus Decker
проще всего оставлять, следующий по простоте переносить едро в high mem,
в любом случае тебе делать far jump чтобы селекторы сбросить
А зачем far jump? У меня и так уже включён защищённый режим просто без страничной адресации
источник

BD

Berkus Decker in pro.osdev
если не сделать far jump то процессор будет использовать старый дескриптор сегмента кода, вот хоть убей не помню включается там страничная адресация автоматическ или нет, могу соврать
источник

d

disba1ancer in pro.osdev
Если взять простой случай перехода протектед без страничной адресации, то без far jump'а не перезапишется теневой регистр сегментный
источник

d

disba1ancer in pro.osdev
На страничную адресацию оно не влияет
источник

d

disba1ancer in pro.osdev
Емнип
источник

BD

Berkus Decker in pro.osdev
окей, значит я путаю
источник

d

disba1ancer in pro.osdev
И емнип страничную адресацию можно включить при нахождении в протектеде
источник

BD

Berkus Decker in pro.osdev
она только там и включается
источник

BD

Berkus Decker in pro.osdev
в реальном режиме какие страницы)
источник

d

disba1ancer in pro.osdev
Я про то что флаг для врубания страничного режима не обязательно предварительно в рилмоде выставлять
источник

d

disba1ancer in pro.osdev
Вообще из протектеда можно не вылезать если 16ти битный код не нужен
источник

BD

Berkus Decker in pro.osdev
ну если биосом не пользоваться или гонять сей биос в эмуляторе x86 (что мне больше нравится), то и не надо да
источник

t

t in pro.osdev
disba1ancer
А зачем far jump? У меня и так уже включён защищённый режим просто без страничной адресации
с книжки скопипастил

Первая инструкция защищённого режима должна быть инструкцией загрузки в регистр cs селектора сегмента кода и обновления EIP. Это должна быть инструкция дальней передачи управления. Единственная инструкция, которая может выполнить загрузку непосредственного значения в регистр CS, это команда

jmp <селектор> : <смещение>

Но почему именно JMP, почему нельзя использовать другие команды для перехода CALL или RET? Потому что команда CALL использует стек для сохранения адреса следующей инструкции, а поскольку в сегментном регистре стека у нас стоит всё ещё старый номер сегмента стека, будет сгенерировано исключение общей защиты и, конечно же, процессор «зависнет». Команда RET вообще не подходит, т. к. для её использования адрес перехода должен содержаться в стеке, а стек у нас не определён.
источник

BD

Berkus Decker in pro.osdev
t
с книжки скопипастил

Первая инструкция защищённого режима должна быть инструкцией загрузки в регистр cs селектора сегмента кода и обновления EIP. Это должна быть инструкция дальней передачи управления. Единственная инструкция, которая может выполнить загрузку непосредственного значения в регистр CS, это команда

jmp <селектор> : <смещение>

Но почему именно JMP, почему нельзя использовать другие команды для перехода CALL или RET? Потому что команда CALL использует стек для сохранения адреса следующей инструкции, а поскольку в сегментном регистре стека у нас стоит всё ещё старый номер сегмента стека, будет сгенерировано исключение общей защиты и, конечно же, процессор «зависнет». Команда RET вообще не подходит, т. к. для её использования адрес перехода должен содержаться в стеке, а стек у нас не определён.
ну это для rmode->pmode, а для включения paging по другому
источник

BD

Berkus Decker in pro.osdev
источник

BD

Berkus Decker in pro.osdev
вот пишуть что только битик один поставить и всё
источник