Если запускать прогу из фасма по F9, то результат получается совершенно не такой, как ожидается. Если же скпомпилить, а потом запустить из эксплорера, то всё ок UPD: Сначала заатачил не тот файл. Поправил.
Fasm 1.60, WinXP SP2 При запуске из эксплорера получается шахматная доска (как и ожидается), а при запуске из фасма получается то, что приатачено _1992212345__output.gif
Loger Может дело в cmpeqpd ? На каком основании ты считаешь, что при запуске проги в xmm должны быть валидные вещественные числа ? Возможно при запуске из фасма в некоторых регистрах попадаются инвалидные NaN'ы и результат cmpeqpd = false. Лучше все таки делать более надежную инициализацию регистров без сомнительных допущений об их начальном состоянии
Ну ес-но все дело в cmpeqpd и неинициализированных xmm. Запуск из fasm 1.56 под XP SP2 тоже приводит к "неверным" результатам - только вертикальные полосы смещены. А потому что xmm не занулены и часть из них содержит NaN'ы. Если сделать явную инициализацию типа Code (Text): pxor xmm0,xmm0 cmpeqpd xmm0,xmm0 por xmm1,xmm0 ... por xmm7,xmm0 то все работает правильно, что из фасма, что из эксплорера PS: еще одно подтверждение того, где нужно искать причины "особенностней" XP )
leo Неужели NaN!=NaN ? К тому же получается, что изначальное значение xmm-регистров в создаваемом процессе при запуске из Fasm и экслорера разное
Loger В случае если хотя бы один из операндов NaN, то cmpeqpd выдает false = 0 (см.IA-32 volume 2). При запуске из эксплорера все xmm заботливо сброшены в 0, а вот из фасма почему то установлены в какие-то значения, часть из которых = xFF..FFh = NaN. Видимо это прибамбасы винды, но в любом случае лучше инициализировать регистры явным образом