Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 33 • Страница 1 из 21  2  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Junior
Статус: Не в сети
Регистрация: 29.08.2007
Откуда: Омск
Для проги нужна поддержка SSE(или SSE2), а проц не поддерживает. Можно ли как нибудь сэмулировать ее, например ловить исключение "неизвестная инструкция", смотреть что там за инструкция и если это SSE инструкция эмулировать ее? В исключениях процессора не шарю, есть ли такое исключение вообще?
А если можно, есть ли такие эмуляторы?



Партнер
 

Member
Статус: Не в сети
Регистрация: 16.11.2007
Откуда: Крым, Земля!
Фото: 4
The Lich В ПОИСК! А по проблеме - НЕТ, нельзя эмулирвать то, что считается на аппаратном уровне в процессоре(особенно ССЕ1 и ССЕ2 :( ).

_________________
Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было.
Hi Jack - Hi! Hijack - Hi!
Broni всех стран объединяйтесь!


 

Junior
Статус: Не в сети
Регистрация: 29.08.2007
Откуда: Омск
Увы, в поиске не нашел ничего кроме полной эмуляции процессора. А аппаратная поддержка эмуляции может быть вполне, вот я хочу это выяснить.
Добавлено спустя 2 минуты, 54 секунды
Я имею в виду вот что - если на неизвестную инструкцию проц выдает исключение, которое можно поймать, то можно определить что это за инструкция и сэмулировать ее программно (это будет долго, да), только надо промотать IP через эту инструкцию, а механизм исключений этого, вроде, не позволяет.


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Откуда: Саратов
Это невозможно


 

Junior
Статус: Не в сети
Регистрация: 29.08.2007
Откуда: Омск
а можете объяснить, почему? был бы признателен


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Откуда: Саратов
Простите за глупость :(


Последний раз редактировалось Intelator 24.05.2009 9:00, всего редактировалось 1 раз.

 

Junior
Статус: Не в сети
Регистрация: 07.08.2008
Откуда: Киев
А почему нет? Только скорость обработки и возможно качество будут не очень


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Откуда: Саратов
Простите за глупость :(


Последний раз редактировалось Intelator 24.05.2009 9:00, всего редактировалось 1 раз.

 

Junior
Статус: Не в сети
Регистрация: 29.08.2007
Откуда: Омск
а можно без аналогий? проц i386 обладает довольно большими возможностями.
Добавлено спустя 35 секунд
вот он натыкается на неизвестную инструкцию. что дальше происходит?


 

Member
Статус: Не в сети
Регистрация: 18.08.2008
Откуда: Саратов
Он не знает, что делать. Чтобы это исправить, надо переписывать программу


 

Junior
Статус: Не в сети
Регистрация: 29.08.2007
Откуда: Омск
нет, он, по-моему, знает что делать. он вызывает соответствующее прерывание. но вот тут мои познания кончаются. какое прерывание он вызывает? можно ли после него продолжить работу? можно ли промотать IP на нужное число байтов?


 

Member
Статус: Не в сети
Регистрация: 16.11.2007
Откуда: Крым, Земля!
Фото: 4
The Lich писал(а):
нет, он, по-моему, знает что делать. он вызывает соответствующее прерывание

Как он может вызвать то, о чём не знает? Вообщето, если аппаратная часть не подходит под программу она вообще не запускается!!! Ну или выдаёт ошибку. Третьего не дано!

_________________
Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было.
Hi Jack - Hi! Hijack - Hi!
Broni всех стран объединяйтесь!


 

Junior
Статус: Не в сети
Регистрация: 29.08.2007
Откуда: Омск
вы хорошо разбираетесь в механизме прерываний i386? если нет, тогда, пожалуйста не отвечайте


 

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 секунды
извините за даблпост, что-то сервак лежал


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
The Lich писал(а):
А если можно, есть ли такие эмуляторы?

Универсальных готовых решений нет, но можно эмулировать процессор целиком:
http://bochs.sourceforge.net/getcurrent.html

The Lich писал(а):
вот он натыкается на неизвестную инструкцию. что дальше происходит?

Генерится исключение, и его можно перехватить.

The Lich писал(а):
Можно ли как нибудь сэмулировать ее, например ловить исключение "неизвестная инструкция", смотреть что там за инструкция и если это SSE инструкция эмулировать ее?

Можно, но отлов исключений по каждому вызову чреват большими тормозами.

Megagad писал(а):
А по проблеме - НЕТ, нельзя эмулирвать то, что считается на аппаратном уровне в процессоре(особенно ССЕ1 и ССЕ2 Sad ).

Можно, просто никто этим не занимается.
Добавлено спустя 2 минуты, 23 секунды
Intelator писал(а):
Как думаете, на калькуляторе можно эмулировать обработку графики, например?

Intelator писал(а):
Тогда дугой пример Smile Можно на лопате эмулировать вертолет?

Когда тупишь, добавляй "имхо". А вообще, советую не тупить. Особенно, если ничего не можешь сказать по теме.
Добавлено спустя 12 минут, 52 секунды
The Lich, эта тема не нова. Но задачу можно решить проще, нежели написанием полноценного эмулятора (частичным пропатчиванием программы).

http://www.cracklab.ru/f/index.php?acti ... =6&page=-1

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

_________________
14900KF@6000/4800 (p95 & Linpack)
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

Junior
Статус: Не в сети
Регистрация: 29.08.2007
Откуда: Омск
спасибо за ссылку.
Добавлено спустя 2 минуты, 31 секунду
вроде оно никому не нужно, с другой стороны полно форумов с темами, где у людей не идут адобские/автодесковские монстрЫ из-за уже SSE2. Они не знают даже почему, советуют венду переустановить и т.п.


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
The Lich
Главное, что "оптимизация", как сказал человек на краклабе, довольно забавна...

Цитата:
95% SSE кода это:
movss xmm0,[mem1]
movss [mem2],xmm0


Ну действительно, без ссе просто никак :tooth:

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

_________________
14900KF@6000/4800 (p95 & Linpack)
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


 

Member
Статус: Не в сети
Регистрация: 16.11.2007
Откуда: Крым, Земля!
Фото: 4
HertZ писал(а):
Можно, просто никто этим не занимается.

Эм, тода мине пожалуйста эмулятор ССЕ2 для бартона, пару штучек :) Ну или для пня третьего(чтоб оно ишо на мульти-процессоре пахало)!! Если найдёте - я вам памятьник поставлю!

_________________
Хочешь сделать людям хорошо — сделай плохо, а потом верни, как было.
Hi Jack - Hi! Hijack - Hi!
Broni всех стран объединяйтесь!


 

Advanced member
Статус: Не в сети
Регистрация: 27.02.2007
Откуда: Москва
Фото: 54
Megagad, берите исходники из топика по ссылке выше, и дописывайте :-)

Мне, если честно, не очень хочется этим заниматься... Разве что за денежку..

_________________
14900KF@6000/4800 (p95 & Linpack)
96G Trident Z5 @ 7200 (34-42-42-53, ICE-RDT)
z790 Aorus Master X
RX 6900XT GAMING OC 16G+Bykski WB
macOS Sequia 15.5


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 33 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan