Вопрос № 22446: Здравствуйте! Просвятите новичка...
Как я понимаю, в процессе эволюции процессоров Intel в них добавлялись новые команды(MMX, SSE). Где они вообще используются?
Пусть в программе есть эти инструкции. Тогда, если у меня не новый процессор, то...
Вопрос № 22.446
Здравствуйте! Просвятите новичка...
Как я понимаю, в процессе эволюции процессоров Intel в них добавлялись новые команды(MMX, SSE). Где они вообще используются?
Пусть в программе есть эти инструкции. Тогда, если у меня не новый процессор, то запуск такой программы невозможен? Или все программы компилятся в режиме совместимости со старыми процессорами(тогда зачем новые команды нужны)?
Отправлен: 21.06.2005, 02:01
Вопрос задал: seerix (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Евгений Иванов
Здравствуйте, Seerix!
При запуске своей программы ты должен следить за средой, в которой всё это будет выполняться. Есть команды - CPUID. Есть регистры MSR. В них содержится (или в том, что они возвращают) описание процессора и поддерживаемые функции/команды.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 21.06.2005, 06:55 Оценка за ответ: 5
Отвечает: Калашников О.А.
Здравствуйте, Seerix!
Команды MMX и SSE используются для потоковой обработки данных (музыка, видео).
Если Вы пишите на чистом Ассемблере, используя команды MMX и SSE, а запускаете эту программу на старых моделях, то, естественно, эта программа работать не будет.
Чтобы этого избежать, обычно писали две ветки: для MMX / SSE и без них, а сразу после загрузки программы, проверялся тип процессора.
Но в настоящий момент это уже не актуально, т.к. все современные машины, начиная с Pentium-II и III поддерживают эти инструкции.
--------- Всё отлично!!!
Ответ отправил: Калашников О.А. (статус: *Админ)
Отправлен: 21.06.2005, 10:26 Оценка за ответ: 5
Отвечает: John Freeman
Здравствуйте, Seerix!
1) Да, а ещё 3DNow! 3 уровня от AMD, да и SSE много, впрочем как и MMX 2 уровня
2) Точно, невозможен
3) Делают либо несколько exe(Quake2 например), либо обход(самое верное - программа смотрит что за процессор и пускает нужные участки кода, делается элементарно на asm вставках)(пример - Quake3), либо Dynamic Compilation , что то же самое, но код не присутствует , а компилируется(пример - VirtualDub)
4) Всё это фигня, если твой компилятор поддерживает MMX,SSE... , то это не значит что он это эффективно использует, все участки под MMX и выше профессионалы пишут на асме, тогда эффективность наибольшая.
--------- Жить - начертал на знамени я, жить под солнцем всегда побеждая! Кожа моя - одна броня, из стали броня другая.
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 21.06.2005, 13:55 Оценка за ответ: 5