OSDev
http://osdev.su/

Как ограничить Bochs режимом intel 8086
http://osdev.su/viewtopic.php?f=6&t=806
Страница 1 из 2

Автор:  mikesmmm [ 02 окт 2013, 12:09 ]
Заголовок сообщения:  Как ограничить Bochs режимом intel 8086

Всем доброго времени суток!

Есть установщик Minix3, который может установить систему даже на intel 8086. (так заявлено)
Как сделать так чтобы при установке он воспринял процессор виртуальной машины Bochs как 8086 и
установил соответствующий вариант системы?

Автор:  maisvendoo [ 02 окт 2013, 20:21 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

Разве minix, тем более 3 (!), работает не в защищенном режиме? Которого в 8086 не было и в помине? Может имеется в виду всё же х86?

8086 - это реальный режим с 20-разрядной адресной шиной, максимум 1 Мб ОЗУ, адресуемой сегментами по 64 Кб. Миникс там просто не сможет работать. Скорее всего имеется в виду 80x86 под которым понимают, в контексте установки minix, семейство процессоров начиная с 386. Minix - это микроядро, которым Таненбаум усилино тыкал в Торвальдса во время их известной перепалки, а соотвественно использует все плюшки защищенного 32-разрядного режима

Автор:  mikesmmm [ 04 окт 2013, 04:36 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

Точно...
Проц должен быть не ниже 80386.
А вот компилятор может быть и 16-разрядным, поэтому в исходниках
постоянно и натыкаюсь на условную компиляцию.

Автор:  maisvendoo [ 04 окт 2013, 06:47 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

Что касается собственно поднятого вопроса, то таки да, в Bochs есть возможность эмулировать именно нужный проц
Bochs User Manual. Chapter 4. Setup писал(а):
4.2.5. cpuid

Example:

cpuid: level=6, mmx=1, sep=1, sse=sse4_2, apic=xapic, aes=1, movbe=1, xsave=1

This defines features and functionality supported by Bochs emulated CPU:

level

Set emulated CPU level information returned by CPUID. Default value is determined by configure option --enable-cpu-level. Currently supported values are 5 (for Pentium and similar processors) and 6 (for P6 and later processors).

family

Set family information returned by CPUID. Default family value determined by configure option --enable-cpu-level.

model

Set model information returned by CPUID. Default model value is 3.

stepping

Set stepping information returned by CPUID. Default stepping value is 3.

vendor_string

Set the CPUID vendor string returned by CPUID(0x0). This should be a twelve-character ASCII string.
.
.
.

и это далеко не полный список параметров, которые можно задать для CPU в Bochs. Полный - тут

Что касается используемого мною QEMU, то там есть параметр запуска -cpu которым можно включить необходимый проц, например так у меня стартует qemu для отладки

Цитата:
$ qemu-system-x86_64 ~/PhantomEx/hdd/hdd.img -m 1024 -cpu pentium2 -rtc base=localtime -S -s > /dev/null &


У других ВМ возможности выбора архитектуры CPU ещё более скоромные. Бокс канеш впереди планеты всей, если бы ещё такой медленный он не был...

Однако, Bochs эмулирует процессоры начиная с 386, так что посмотреть 8086 и 80286 на нем не выйдет, а жаль - с познавательной точки зрения меня лично интересует защищенный режим в процессоре 286

Автор:  Nable [ 05 окт 2013, 01:14 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

> если бы ещё такой медленный он не был...
Вечный trade-off между точностью и скоростью, всё норм.
> а жаль - с познавательной точки зрения меня лично интересует защищенный режим в процессоре 286
Экая некрофилия в сочетании с мазохизмом. Что ж, у меня первая мысль - попробовать DosBox, не удивлюсь если там PM16 работает. А, хотя если тебе надо чтобы при этом он полностью работал как 286 (без возможностей 386), то хм, вопрос. Когда-то давно были реальные железки с этим, но раздал.

Автор:  Himik [ 05 окт 2013, 01:54 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

maisvendoo писал(а):
Однако, Bochs эмулирует процессоры начиная с 386, так что посмотреть 8086 и 80286 на нем не выйдет, а жаль - с познавательной точки зрения меня лично интересует защищенный режим в процессоре 286

Но в i386 поддерживается защищённый 16-битный режим i286 в полном объёме, можно использовать. Причём защищённый режим у них очень разный. Для чистоты эксперимента можно в компиляторе своей ОС задать тип целевого процессора i286, тогда всё будет точно 16-битное, без вариантов.

Автор:  Nable [ 05 окт 2013, 08:43 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

> Но в i386 поддерживается защищённый 16-битный режим i286 в полном объёме, можно использовать.
Казалось бы, и во всех последующих тоже. Но есть нюанс. Например, что настоящий реальный режим был только у первых 8086/8088 (ну и 80186), а дальше (с i386 точно) уже идёт аппроксимация реального с помощью средств защищённого ( http://www.os2museum.com/wp/?p=319 ). Быть может, между PM16 286 и PM16 последующих процессоров есть какая-то разница. Быть может, дело лишь в наборе инструкций. В общем, интересный вопрос - зачем maisvendoo хочет ограничиться 286, если фичи его можно использовать и на последующих.

Автор:  sh2ezo [ 05 окт 2013, 10:12 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

А бочс юзает интерпретацию или JIT-компиляцию инструкций?

Автор:  Nable [ 05 окт 2013, 10:28 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

А книжку почитать? Интерпретацию, но с весьма хитрыми^W эффективными оптимизациями.
http://bochs.sourceforge.net/How%20the% ... dition.pdf
http://bochs.sourceforge.net/Virtualiza ... _Final.pdf

И почему "или"? Обычно подходы сочетают. Хотя всякое бывает, например, в v8 говорят что нет интерпретации вообще, только два JIT-компилятора.

Автор:  sh2ezo [ 05 окт 2013, 14:27 ]
Заголовок сообщения:  Re: Как ограничить Bochs режимом intel 8086

За ссылочки спасибо. Просто я до этого писал только интерпретатор игрушечного языка на dotNet, поэтому "или".

Кстати, "или" ещё потому, что непонятно, как работает JIT с самомодифицирующимся кодом.

----UPDATE------
Понял, как

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/