Переписал простую процедуру ХОР-а на ммх Теоретически должен быть выиграш в скорости А на практике на виртуалке изредка падает программа как раз на юзании ммх-а Дело не в коде Лишнее перетереть никак не мог Программа выдает ошибки либо о переполнении фпу либо о недопустимости операций Подскажите, в чем дело и как решить проблему?
ох сомневаюсь. Вся петрушка в том, что ММХ пользует сопроцессор. Если ты параллельно с ММХ командами пользуешь FPU - неминуемо вылезут глюки. Так что +1.
MMX используют регистры фпу, поэтому в конце MMX-процедуры нужно обязательно вызывать emms для очистки стека фпу
я вот как раз сейчас читал про emms и вот чо подумал, а нафиг она нужна? ведь перед вычеслениеми FPU вызывается finit которая обнуляет регистры и сбрасывает флаги состояния.
В нормальных (профессиональных) прогах finit вызывается один раз при старте потока и затем размаскируются исключения (плюс можно понизить точность вычислений до double или float если не нужна "суперточность"). А тыканием finit в каждую процедуру занимаются только ньюбы и доморощенные писаки типа автора fpulib для масма