Эмуляторы VMWare & Bochs

Тема в разделе "WASM.OS.DEVEL", создана пользователем wasm_test, 15 мар 2007.

  1. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Пока отлаживал загрузчик столкнулся с такой проблемой.
    Код работает в vmware, но не работает в bochs. Если подправить некоторые моменты, ситуация меняется ровно наоборот. Работает в bochs, но не работает в vmware.
    Отсюда вопрос - какой эмулятор "правильнее" эмулирует?

    Оба кода, к сожалению привести на данный момент не могу, только один - который работает в Bochs (в аттаче).

    ЗЫ. Разница в правке частично проявляется в перестановке директив use32 и use16.
    Я заметил, что даже после переключения в 32битный режим Bochs продолжает воспринимать код как 16битный вплоть до дальнего джампа. Vmware так не делает.
    А может и наоборот) не помню уже
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ой-ой, прикрепил не тот файлик )
     
  3. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    по-моему, Boshs гонит
    а в чем вопрос-то? возьми да и проверь без эмуляторов..
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Да просто ребутаться было влом )

    Ну все-таки я проверил на своем проце.. результат превзошел все ожидания, BOCHS эмулирует правильно, а VmWare - нет.
    На самом деле в первом посте я слегка слукавил, реально ситуация обстоит так - какая текущая разрядность у процессора между командой записи в CR0 и командой дальнего джама JMP, которая очищает кеш и перезагружает CS при переходе из нереального режима (UNREAL MODE) в защищенный.
    У Bochs - 32 бит, у VmWare - все еще 16. На реальном компе проверил - на самом деле 32. Вывод - VmWare неверно эмулирует переключение из нереального режима.
     
  5. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ну-ну..
    помню, тож извращался с протектом под варь, так она, сволочь, ваще валилась в пртекшн фаулт )
     
  6. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    дык зубков пишет, что при бит1=1 регистра сr0, проц в защищенном режиме. значение бит1=0 не уточнено, сталобыть это уже неопределенность.
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    FreeManCPM
    В этом "странном" месте бит PE уже равен еденице (фактически, проц в защищенном режиме уже), однако код выполняется в старом сегменте и будет выполняться до явной перезагрузки сегмента CS командой JMP FAR.
    Просто возникла необходимость уточнить это неопределенное состояние проца на этом участке.
    (От разрядности текущей банально зависит то, как надо кодировать JMP FAR - с префиксом 66 или без. Оказывается, без, Bochs тоже так считает, а вот VMWare брыкалась)

    Nouzui
    и правильно делала) реалмоде-протектедмоде переход она эмулирует нормально. другое дело, когда вопрос заходит об unreal mode..
     
  8. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    и что сие значит? никто не может предсказать поведение проца, когда младший бит cr0 равен 0?
     
  9. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    ну я дальше книжки не рыл. а там явно не указанно поведение. скорее всего будет зависеть от параметров сегмента, что и привело Great-а в зоблуждение. а при бит1=1 параметры сегмента не учитываются
     
  10. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    какие еще параметры сегмента в реал моде?
    и кстати, Great, а где ты в своем аттаче увидел, как проц в этом промежутке себя ведет?
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    просто по тому, падает ли тачка без префикса 66 у джампа или нет. вмваря падает с #GP, бошс и реальный комп - нет.
    отсюда однозначный вывод о разрядности проца в тот момент
    вмваря наверное переходит в защищенный режим по-настоящему из unreal только при перезагрузке CS
     
  12. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    вопрос снимается
     
  13. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    не успел )
     
  14. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    да VMWare вообше кривость для тестинга своего загрузчика :\
    Помниться писал чтение с дискетки через порты в/в. Нихрена не работало. ПРоверяю на боще и реальной машине - всё пашет.
     
  15. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    вмварь как уже было сказано нормально мулит переход из РЕАЛЬНОГО в защищенный. А что такое unreal - это вопрос открытый.
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ну блин, это и так ясно) если бы не так, винда бы не грузилась :))

    ну, видимо, там не так реализован переход PM->RM отсюда такие последствия. На реальном компе это будет уже "unreal mode", а у нее там нечто вообще странное образуется. Наверное, обычный реальный режим
     
  17. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ну, в принципе, на древних процах так и было..
    вмварь сделана точно по спецификации ))
     
  18. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    n0name Great
    а о какой версии vmware идет речь?
     
  19. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    rain
    Я работал с 5.5
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    у меня 6.0-e.x.p. с Debug- и Release- ядрами

    бугага) по спецификации i80386 ?)))))) или даже 286..