OSDev
http://osdev.su/

Отслеживание использования сопроцессора без переключений TSS
http://osdev.su/viewtopic.php?f=5&t=803
Страница 1 из 1

Автор:  sh2ezo [ 24 сен 2013, 14:02 ]
Заголовок сообщения:  Отслеживание использования сопроцессора без переключений TSS

Решил полностью отказаться от использования TSS. PUSHA/POPA+IRET прекрасно сделают своё дело. Вот только остается проблема с сопроцессором. Каждый раз сохранять и восстанавливать 512 байт при переключении не катит, ИМХО. Также не имеет смысла делать при каждом переключении LTR для установки TS. Есть мысль ручками устанавливать TS, но возникает вопрос, сильно ли скажется
Код:
mov eax,cr0
or eax,8
mov cr0,eax

на скорости переключения, учитывая, что придется переключать CR3 также вручную.

В манах интела не нашёл других способов поднять TS, кроме как ручками и через LTR(Почему STTS нету???). Знает ли кто-нибудь эти самые другие способы? Также интересуют способы вызвать #NM при исполнении инструкций сопроцессора. Выставление EM при запуске системы и эмуляцию сопроцессора не предлагать.

Автор:  phantom-84 [ 24 сен 2013, 15:38 ]
Заголовок сообщения:  Re: Отслеживание использования сопроцессора без переключений

Цитата:
Есть мысль ручками устанавливать TS, но возникает вопрос, сильно ли скажется
Код:
mov eax,cr0
or eax,8
mov cr0,eax

на скорости переключения, учитывая, что придется переключать CR3 также вручную.
Правильная мысль. Насколько знаю, так все и делают. Еще можно попробовать перезаписывать cr0, только когда это действительно необходимо.

Автор:  Himik [ 24 сен 2013, 21:03 ]
Заголовок сообщения:  Re: Отслеживание использования сопроцессора без переключений

sh2ezo писал(а):
Также интересуют способы вызвать #NM при исполнении инструкций сопроцессора.

При установке в CR0 бита TS, #NM вызывается на любой FPU инструкции. Если установлен и MP, то будет реагировать и на команды wait, fwait.

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