Консультация № 194651
09.02.2019, 19:54
0.00 руб.
0 8 1
Здравствуйте! Прошу помощи в следующем вопросе:

Рудаков Финогенов 2001. пример 56.1
В частности вопрос по тому, возможно ли то, что в виртуальных машинах при переходе обратно в реальный режим из защищённого, отработка кода происходит неправильно?
то есть переход обратно в реальный режим со сбросом процессора (и указанием адреса возврата в СМОS) происходит нормально, а если через подготовку пределов теневых регистров, а затем сброс нулевого бита CR0, то уходят виртуальные машины в перезагрузку/отключаются. dosbox, vmware, virtualbox.
Вопрос очень актуален, так как если не узнать так это или нет(неправильная работа виртуальных машин), может оказаться бесполезным дальнейшее изучение материала, можно конечно пропустить эти моменты, но надеюсь что Вы поможете.

Обсуждение

давно
Старший Модератор
31795
6196
09.02.2019, 20:49
общий
Адресаты:

Рудаков Финогенов 2001. пример 56.1

Я знаю две книги этих авторов:
  • Рудаков П.И., Финогенов К.Г. Программируем на языке ассемблера IBM PC 1997.
    Пример 56.1. Резидентная программа для активизации программы (стр. 257)
  • Рудаков П.И. Финогенов К.Г. Язык ассемблера уроки программирования 2001.
    Пример 56.1. Сложение на сопроцессоре целых чисел(стр. 256)

Теперь сам вопрос, о чем Вы?
ISBN в студию.

Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
402218
66
09.02.2019, 21:28
общий
09.02.2019, 21:49
извините. перепутал цифры.
2001го года. пример 67.1 исключения.
В примере 65.1 переход происходит за счёт сброса процессора и перехода на программу указанную в биосе, посредством адреса 0Fh КМОПа.
То есть переделал пример 76.1 с переходом в реальный режим способом как в 65.1 и всё нормально было.
Получается что всё таки способы перехода в примере 76.1 вызывает перезагрузку\зависание виртуальных машин. Могу и ошибаться.

Отредактировал. а то опять ошибся.
давно
Старший Модератор
31795
6196
10.02.2019, 03:44
общий
Адресаты:
Вы должны понимать, что любая виртуальная машина, это программа, любой эмулятор, это тоже программа, любая виртуальная машина = эмулятор..
  • dosbox - программа, которая "виртуалит" DOS, для прыжков в/из РМ(protected mode), не предназначена,
  • vmware и virtualbox, но они не могут прыгнуть выше возможностей "хозяйки" и не забывайте, они работают под "хозяйкой"


Любая ВМ, -программа, но работающая под управлении ОСи-хозяйки.
1)Любая ОСь - работает в РМ(Protected mode), и она не даст - забрать управление у себя.
2)Любая ОСь - не даст, какой либо программе, выполнить что либо для перехода в RM и потерять свое управление.
3)Любая ОСь - не даст, выполнить in / out, в РМ, не под режима ядра.
4)Любая ОСь - даст ВМ, получить, данные регистров процессора, но изменить - не даст.

и таких "Любая ОСь", я могу перечислять бесконечно.
. . .

В книге:
Многие весьма привлекательные возможности процессоров принципиально не реализуются в реальном режиме, который сохраняется в современных процессорах лишь для обеспечения совместимости с предыдущими моделями процессоров.


В книге пишут, что есть только RM, PM и VM, а вот и не угадали, сами возможности процессора не представляют даже, сами разработчики. В 64-х битных процах, отключили сегментацию,(Multix-если память не изменяет), т.к. эта возможность не была использована "писятелями" ОСей.
Они научились переходить в РМ, только когда CS,DS,ES,SS адресуются на одно адресное пространство и размером 4Гб. А Multix - позволял ОСи, выделять любой программе виртуально каждому сегменту по 4Гб, т.е. это больше, чем просто 4Гб .
Т.е. их научили BASE=0х00000000, для всех сегментов, а то.что может быть 0х0000000Х, для другого сегмента, даже никто и не проверял и не пытался проверить. Поэтому, в 64-х битных процессорах, убрали эту возможность - СЕГМЕНТАЦИЯ.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
402218
66
10.02.2019, 08:24
общий
10.02.2019, 08:27
Цитата: Зенченко Константин Николаевич

dosbox - программа, которая "виртуалит" DOS, для прыжков в/из РМ(protected mode), не предназначена,
vmware и virtualbox, но они не могут прыгнуть выше возможностей "хозяйки" и не забывайте, они работают под "хозяйкой"


Любая ВМ, -программа, но работающая под управлении ОСи-хозяйки.
1)Любая ОСь - работает в РМ(Protected mode), и она не даст - забрать управление у себя.
2)Любая ОСь - не даст, какой либо программе, выполнить что либо для перехода в RM и потерять свое управление.
3)Любая ОСь - не даст, выполнить in / out, в РМ, не под режима ядра.
4)Любая ОСь - даст ВМ, получить, данные регистров процессора, но изменить - не даст.

Спасибо за разъяснение. Я почему то думал что любая функция может быть с эмулирована. Но видимо они написаны так , что бы можно было использовать реальные регистры и ресурсы процессора? У Меня складывалось впечатление что к примеру будет программно написано всё, и даже Я в Своём разуме выстроил схему физической части компьютера, и что CR0 всего лишь выделенный массив в программе, которым можно оперировать. И естественно он никак не воздействует на ЦПУ реального компьютера. Но видимо это бы оказалось бы ресурсозатратным?
Значит получается, что единственный вариант для Меня это ставить на реальный компьютер ms-dos?
давно
Старший Модератор
31795
6196
10.02.2019, 18:01
общий
10.02.2019, 18:02
Адресаты:
Цитата: Kdsfofwe21
Я почему то думал что любая функция может быть с эмулирована.

Да, в теории, это все правильно.
Но, то, что должно работать на "чистом" железе, не всегда будет работать в эмуляторе этого железа. При всем уважении к разработчикам ВМ, полноценного эмулятора железа, нет.
Каждый разработчик железа, использует свою элементную базу и не смотря на схожесть, различия таки есть. И ни одна ВМ, не сможет учесть все эти тонкости.



Цитата: Kdsfofwe21
У Меня складывалось впечатление что к примеру будет программно написано всё, и даже Я в Своём разуме выстроил схему физической части компьютера

Попробуйте написать, элементарный отладчик, с ограниченным набором команд. К примеру К580, максимум 256 команд, я не говорю о Z80, с кучей дополнительных страниц кодов, если память не изменяет там всего полторы тысячи команд, ну плюс-минус копейки.

Для полноценной эмуляции, нужно использовать симулятор электрических схем, на нем строить схему МП, добавлять блоки-эмуляторы CPU, ROM, RAM, VGA, HDD, и всего остального, что можно запихнуть в нее. Скорее всего, такие симуляторы есть у корпораций, т.е. в распоряжении узкого круга ограниченных лиц.

Но на их разработку были потрачены крутые "бабки" и куча человеко-часов, одному кодеру на это и жизни будет мало. Некоторые участки кода писали фрилансеры, сотни тысяч которых, писали один из модулей, реального блока. Потом их адаптировали между собой. Корпорация никогда не даст продукт, такого уровня в свободный доступ, не получив за это реальные "бабки".

Книга писалась под Системы Windows NT/2000,95/98 ещё были упоминание Windows 3.1.
Столько времени прошло, сейчас "Семерка" - уже старуха, и "Пенсионный Фонд" Windows, собирается отказаться, от её поддержки.
Цитата: Kdsfofwe21
Значит получается, что единственный вариант для Меня это ставить на реальный компьютер ms-dos

Сейчас железо того времени, стоит "копейки", Вам нужно всего БП, МП, ЦПУ, Флоп. Своего рода тестер. На реальном пишите загрузочный флоп, потом на тестере проверяете.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
402218
66
10.02.2019, 18:38
общий

Цитата: Зенченко Константин Николаевич
Попробуйте написать, элементарный отладчик, с ограниченным набором команд. К примеру К580, максимум 256 команд, я не говорю о Z80, с кучей дополнительных страниц кодов, если память не изменяет там всего полторы тысячи команд, ну плюс-минус копейки.

Спасибо. эмулятор конечно можно написать, но Я даже не знаю такие машинки, может когда овладею в мастерстве ассемблером :).
Цитата: Зенченко Константин Николаевич
Книга писалась под Системы Windows NT/2000,95/98

да, это Я понимаю, но решил пройти от Дос до вин 10, последовательно, что бы некоторые элементы современной виндовс и других операционных систем не вызывали вопросов а были догмой.
Цитата: Зенченко Константин Николаевич

Сейчас железо того времени, стоит "копейки", Вам нужно всего БП, МП, ЦПУ, Флоп. Своего рода тестер. На реальном пишите загрузочный флоп, потом на тестере проверяете.

походу дела так и придётся. Но для Меня преимущество эмулятора в том, что можно через флоппи перекидывать файлы , на чистом железе у Меня флоппи двух штук нету, да и времени это займёт пока переставишь перезапишешь.
Но Я слышал такую историю что для программиста 90ых годов "как два байта переслать" не означает что это легко сделать, а наоборот, и только поэтому не пытался установить дос на реальное железо, потому что не знаю как там сеть делать. Не подскажите книжки или ресурсы где это доходчиво написано? Спасибо за ранее )
давно
Старший Модератор
31795
6196
10.02.2019, 21:35
общий
Адресаты:
Цитата: Kdsfofwe21
но Я даже не знаю такие машинки

РК-86, Z80.pdf (1.31 Mб), описание логики, команд, структур, диаграмм и т.п. Просто почитайте. Говорят, что К580=Z80=i8080, были прародителями х86. Т.е. все наработки на этих процессорах, были использованы в х86, или другими словами потомок этого процессора работал с первыми DOS, ну а дальше историю Вы знаете.
Ну, с флопом, я конечно загнул, сейчас, наверное сам привод найти трудно, а дискеты и подавно.
Как вариант, можно, старый HDD можно использовать как "флоп", но постоянное переключение плохо влияет на контакты.
Цитата: Kdsfofwe21
Не подскажите книжки или ресурсы где это доходчиво написано

  • Кулаков В. - Программирование на аппаратном уровне_ специальный справочник. Глава №2, кроме RM, PM, VM(виртуальный х86), есть ещё другие приколы с этим процессором.

  • Таненбаум Операционная системы Разработка и реализация - пару изданий.
  • Столлингс Операционные системы - тоже пару изданий.
  • Зубков С. Assembler для DOS, Windows и UNIX, есть команды простые, но и есть и те, которые плюс
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
14.02.2019, 13:40
общий
это ответ
Здравствуйте, Kdsfofwe21!

Для понимания, того, что происходит, Вам нужно понять, с чем Вы работаете.
В сети есть книга :Виртуальные машины: несколько компьютеров в одном, Алексей Гультяев. В книге упоминается ВМ Bochs(о котором я как-то забыл). Попробуйте на нем по работать.
Удачи!
5
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа