доступ к 64 разрядным инструкциям
нет за редкими исключениями в число которых линуксы и windows не входят
Блин, а из 16-разрядной ДОС 32-битная Win 3.11 + Win32s запускалась на "Ура"...
смотря что считать 64-разрядными. так-то и доступ к 128 разрядным есть без проблем
Но, если не постараться, ОС, скорее всего, упадёт.
У самого стоит 64-битная винда, чтоб можно было тестировать компилятор в x64 на настоящем железе без чехарды с qemu
Правда, при переключении процессов старшие половинки не будут записаны и восстановлены.
И в чём с ними проблема? Мне вспоминается, что их вполне можно использовать.Нужен специальный драйвер, работающий в режиме ядра, который мог бы сделать сегмент кода со включенным long mode.
Очень большой геморрой это. Чтобы ничего не уронить, надо возвращаться в натуральный 32-битный режим перед ядерными вызовами (compatibility mode не канает из-за разных форматов сохранения данных на стеке при вызовах по call gate и прерываниях). Это же относится и к обработке прерываний, которые, вообще говоря, предсказывать немного сложно )
Прерывания не нужно предсказывать, их нужно просто все перехватывать. Какой уважающий себя драйвер не перехватывает все прерывания и половину Native и Kernel API?
Я чего-то не понял. 64-битные команды только в особом режиме процессора работают что ли?
Я чего-то не понял. 64-битные команды только в особом режиме процессора работают что ли?ты не поверишь. 64-битном. а бывает ещё 32битный. и раньше бывал 16битный.
так что скорее всего 64битные команды не получится поиметь без включения полного 64битного режима с новой адресацией памяти и прочими несовместимостями.
Зашел в BIOS, включил упомянутую технологию, 64-разрядный гость взлетел на ура на 32-битном хосте.
64битные команды не получится поиметь без включения полного 64битного режимаА как у меня VMWare Workstation в 32-битной винде запускает гостевой 64-битный Линукс?
ну в госте 64битный режим то включён так или иначе.
то что 64 > 32 не значит что один чем-то круче, просто в 64 битах эмулировать 32 проще чем наоборот.
без хардварной поддержкиона так не умеет, если что.
так вот эти префиксы частично пересеклись с какими-то однобайтными старыми командами.Извините, а как тогда работали бы 32-битные проги под 64-битной ОС? Наверняка им не кто инструкции не куропатит.
так что скорее всего 64битные команды не получится поиметь без включения полного 64битного режима с новой адресацией памятиНе вижу проблем, почему этот режим не может работать постоянно. Если только этот режим принципиально не отличается от 32битного. Но в любом случае такого различия, были бы поломаны 32битные, если только перед переключением контекста для них свой режим не выставляется, но там, я думаю, другие проблемы тогда возникают.
и прочими несовместимостями.Какие-такие?
Меня больше волнует когда компиляторы под 64 напишут....
Вообще, похоже, действительно это разными режимами реализовано:
Меня больше волнует когда компиляторы под 64 напишут....Это как?
32-битные аппликухи запускаются в compatibility mode (но общий режим устанавливается в long, т.е. EFER.LMA выставлен). 64-битные апликухи и ядро работают в 64-bit mode.
Вообще говорить именно о "режимах" здесь не совсем правильно. Режимы есть long и не long, остальное — флажки в дескрипторах.
Режимы есть long и не long, остальное — флажки в дескрипторах.уж не в виде флажка ли определяется, long или не long сейчас?
Есть два "больших" режима работы процессора: real и protected (v8086 и SMM не рассматриваем).Ну так я же ссылку привёл, по которой то же самое прочитал (там правда немного по другому это называется). Так зачем ещё раз это дублировать?
посмотрите кто пришёл! молодец, мощно задвинул. =)
Это определяется битом LMA в MSR'е EFER.
Это определяется битом LMA в MSR'е EFER.я к тому, что везде режим определяется каким-нить флажком
Оставить комментарий
chirrsen
Есть ли доступ к 64 разрядным инструкциям из под 32 разрядной ОСи?