Junior
Статус: Не в сети Регистрация: 29.08.2007 Откуда: Омск
Для проги нужна поддержка SSE(или SSE2), а проц не поддерживает. Можно ли как нибудь сэмулировать ее, например ловить исключение "неизвестная инструкция", смотреть что там за инструкция и если это SSE инструкция эмулировать ее? В исключениях процессора не шарю, есть ли такое исключение вообще?
А если можно, есть ли такие эмуляторы?
Junior
Статус: Не в сети Регистрация: 29.08.2007 Откуда: Омск
Увы, в поиске не нашел ничего кроме полной эмуляции процессора. А аппаратная поддержка эмуляции может быть вполне, вот я хочу это выяснить. Добавлено спустя 2 минуты, 54 секунды Я имею в виду вот что - если на неизвестную инструкцию проц выдает исключение, которое можно поймать, то можно определить что это за инструкция и сэмулировать ее программно (это будет долго, да), только надо промотать IP через эту инструкцию, а механизм исключений этого, вроде, не позволяет.
Junior
Статус: Не в сети Регистрация: 29.08.2007 Откуда: Омск
а можно без аналогий? проц i386 обладает довольно большими возможностями. Добавлено спустя 35 секунд вот он натыкается на неизвестную инструкцию. что дальше происходит?
Junior
Статус: Не в сети Регистрация: 29.08.2007 Откуда: Омск
нет, он, по-моему, знает что делать. он вызывает соответствующее прерывание. но вот тут мои познания кончаются. какое прерывание он вызывает? можно ли после него продолжить работу? можно ли промотать IP на нужное число байтов?
Member
Статус: Не в сети Регистрация: 16.11.2007 Откуда: Крым, Земля! Фото: 4
The Lich писал(а):
нет, он, по-моему, знает что делать. он вызывает соответствующее прерывание
Как он может вызвать то, о чём не знает? Вообщето, если аппаратная часть не подходит под программу она вообще не запускается!!! Ну или выдаёт ошибку. Третьего не дано!
_________________ Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было. Hi Jack - Hi! Hijack - Hi! Broni всех стран объединяйтесь!
Member
Статус: Не в сети Регистрация: 16.11.2007 Откуда: Крым, Земля! Фото: 4
The Lich Вообщето, прерывания тут непричём! А ССЕ и ССЕ2 это КОМАНДЫ!(инструкции) И если процессор не может их обработать - он НИЧЕГО не может с ними сделать. Вобщем изучайте: http://ru.wikipedia.org/wiki/SSE Ну и чисто, к слову, чтоб знать ССЕ проц должен как минимум знать ММХ: http://ru.wikipedia.org/wiki/MMX - чего за 386 я не замечал Добавлено спустя 1 минуту, 50 секунд Ну и в догонку: http://ru.wikipedia.org/wiki/I386 - изучайте
_________________ Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было. Hi Jack - Hi! Hijack - Hi! Broni всех стран объединяйтесь!
Junior
Статус: Не в сети Регистрация: 29.08.2007 Откуда: Омск
Конечно, похоже что так делать нельзя, иначе у людей не было бы таких проблем, и были бы ссылки на эмули.
Я знаю, что такое MMX (что такое SSE не знаю, но догадываюсь что это).
Если бы проц умел это, это происходило бы так (например, на i386, который MMX не знает):
1. проц натыкается на неизвестную инструкцию и вызывает прерывание, обрабатывающее эту ситуацию.
2. программа-обработчик определяет, что там за последовательность байтов по адресу, с которого произошел вызов
3. если это известная программе инструкция (например: movd mm0, eax), она программно перегрузит в первый регистр математического сопроцессора значение eax
4. возврат из прерывания, но надо возвращаться на адрес после этой команды
если там не mmx с регистрами мат.процессора, а какой-нибудь SSE с новыми регистрами, вместо них можно использовать память
только, наверное, при неизвестной инструкции он вызывает не специальное прерывание, а какое-нибудь общее "ошибка продолжение невозможно"
Добавлено спустя 5 минут
Конечно, похоже что так делать нельзя, иначе у людей не было бы таких проблем, и были бы ссылки на эмули.
Я знаю, что такое MMX (что такое SSE не знаю, но догадываюсь что это).
Если бы проц умел это, это происходило бы так (например, на i386, который MMX не знает):
1. проц натыкается на неизвестную инструкцию и вызывает прерывание, обрабатывающее эту ситуацию.
2. программа-обработчик определяет, что там за последовательность байтов по адресу, с которого произошел вызов
3. если это известная программе инструкция (например: movd mm0, eax), она программно перегрузит в первый регистр математического сопроцессора значение eax
4. возврат из прерывания, но надо возвращаться на адрес после этой команды
если там не mmx с регистрами мат.процессора, а какой-нибудь SSE с новыми регистрами, вместо них можно использовать память
только, наверное, при неизвестной инструкции он вызывает не специальное прерывание, а какое-нибудь общее "ошибка продолжение невозможно"
ничего читать сейчас не имею возможности, иначе обязательно бы прочитал Добавлено спустя 43 секунды извините за даблпост, что-то сервак лежал
вот он натыкается на неизвестную инструкцию. что дальше происходит?
Генерится исключение, и его можно перехватить.
The Lich писал(а):
Можно ли как нибудь сэмулировать ее, например ловить исключение "неизвестная инструкция", смотреть что там за инструкция и если это SSE инструкция эмулировать ее?
Можно, но отлов исключений по каждому вызову чреват большими тормозами.
Megagad писал(а):
А по проблеме - НЕТ, нельзя эмулирвать то, что считается на аппаратном уровне в процессоре(особенно ССЕ1 и ССЕ2 Sad ).
Можно, просто никто этим не занимается. Добавлено спустя 2 минуты, 23 секунды
Intelator писал(а):
Как думаете, на калькуляторе можно эмулировать обработку графики, например?
Intelator писал(а):
Тогда дугой пример Smile Можно на лопате эмулировать вертолет?
Когда тупишь, добавляй "имхо". А вообще, советую не тупить. Особенно, если ничего не можешь сказать по теме.
Добавлено спустя 12 минут, 52 секунды The Lich, эта тема не нова. Но задачу можно решить проще, нежели написанием полноценного эмулятора (частичным пропатчиванием программы).
Junior
Статус: Не в сети Регистрация: 29.08.2007 Откуда: Омск
спасибо за ссылку. Добавлено спустя 2 минуты, 31 секунду вроде оно никому не нужно, с другой стороны полно форумов с темами, где у людей не идут адобские/автодесковские монстрЫ из-за уже SSE2. Они не знают даже почему, советуют венду переустановить и т.п.
В общем, проще всего вопрос решить можно переделкой JIT, разработанного ntldr, под эти нужды. Производительность в целом несколько пострадает, зато можно будет избежать накладных расходов и геморроя при отлове исключений.. Более универсальное решение, что-ли..
Member
Статус: Не в сети Регистрация: 16.11.2007 Откуда: Крым, Земля! Фото: 4
HertZ писал(а):
Можно, просто никто этим не занимается.
Эм, тода мине пожалуйста эмулятор ССЕ2 для бартона, пару штучек Ну или для пня третьего(чтоб оно ишо на мульти-процессоре пахало)!! Если найдёте - я вам памятьник поставлю!
_________________ Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было. Hi Jack - Hi! Hijack - Hi! Broni всех стран объединяйтесь!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения