User Tag List

Показано с 1 по 10 из 22

Тема: Эмуляторы других платформ в Орионе - программные и аппаратные

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #8

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Видимо, на тот самый крайний случай, когда SP случайно указывает на ПЗУ
    А вообще, SP может указывать на область памяти, где находится обработчик NMI, и доставать байты из под него будет геморойно.
    И что это нам дает? Придется делать выход за пределы обработчика NMI и уже там сначала выключать ПЗУ с обработчиком NMI, и затем делать RET? А этот доп. обработчик класть в ОЗУ где вероятно полезный код прерванного по NMI приложения? Который тоже сохранять (а где?), и как его восстанавливать если мы пришли сюда сделать RET? Какая-то бесконечная рекурсия.

    По-другому, надо делать: обработчик NMI весь держать в той же дополнительной ОЗУ или ПЗУ, включающейся по NMI, и аппаратно ловить выполнение команды RETI (упрощая - RET), по которой аппаратно опрокидывать триггер (отключать NMI-ПЗУ). Тогда на момент чтения со стека адреса возврата все в адресном пространстве уже будет в начальном состоянии.

    Или ваще не париться на предмет где там был стек. Мы эмулируем СПЕК (MSX), а значит знаем где у них ПЗУ и где гарантированно не будет стека. Там же и обработчик NMI разместить. Со Cпеком тут все просто, у него с 0000 идет ПЗУ. А где ПЗУ у MSX?

    - - - Добавлено - - -

    Кстати, метод "переодически ставить стек на ПЗУ" (если там реальное ПЗУ с известным кодом куски которого {например найти их поиском} задействовать под адреса возвратов) можно использовать как защиту от гипервизоров, реализованных на NMI: прерванный такой код вообще нигде не сохранит адрес возврата и не будет понятно куда возвращать управление.
    Последний раз редактировалось Error404; 08.06.2016 в 16:00.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Как работают аппаратные спрайты
    от IanPo в разделе Для начинающих
    Ответов: 23
    Последнее: 06.11.2014, 15:24
  2. Ответов: 7
    Последнее: 12.01.2014, 21:43
  3. Ответов: 14
    Последнее: 16.05.2012, 16:55
  4. Программные интерфейсы.
    от fk0 в разделе Программирование
    Ответов: 1
    Последнее: 19.01.2006, 16:00
  5. МУЗЫКА ВСЕХ ПЛАТФОРМ
    от AAA в разделе Зарубежные компьютеры
    Ответов: 0
    Последнее: 16.10.2005, 19:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •