Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
BratSinot
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 8
1

Поменять знаки у определенных упакованных чисел

18.10.2012, 21:25. Просмотров 581. Ответов 2
Метки нет (Все метки)

Доброго времени суток!

Задача такая, поменять знаки у определенных упакованных чисел. На числах одинарной точности работает:
C
1
static float ma[] = {1.0f, -1.0f, -1.0f, -1.0f};
Assembler
1
dpps $-1, (%[ma]), %%xmm0
На числах двойной точности как-то непонятно, где-то работает, где-то нет:
C
1
static double ma[] = {1.0, -1.0, -1.0, -1.0};
Assembler
1
2
dppd $-1, (%[ma]), %%xmm0
dppd $-1, 16(%[ma]), %%xmm1
Если заменить dppd на mulpd то все работает:
Assembler
1
2
mulpd (%[ma]), %%xmm0
mulpd 16(%[ma]), %%xmm1
Добавлено через 17 минут
Сейчас проверил dpps, тоже не работает o_O

Добавлено через 17 часов 20 минут
Нашел доки от Intel, почитал и понял что сам дурак dot product он же еще суммирует.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 21:25
Ответы с готовыми решениями:

Вычитание упакованных BCD-чисел
здравствуйте, хотелось бы побольше узнать о правильном вычитании таких чисел,...

Как реализовать преобразование упакованных чисел в неупакованные для операций деления и умножения?
Здравствуйте! Подскажите как реализовать преобразование упакованных чисел в...

Нужно в символьной строке поменять пробелы на знаки табуляции
Нужно в символьной строке поменять пробелы на знаки табуляции, написал код...

В первом из массивов поменять знаки у положительных элементов, а во втором - у отрицательных
Всем привет, нужна помощь, Даны два массива. В первом из них поменять знаки...

Сложение упакованных BCD чисел
Мне требуется сложить два упакованных BCD числа: 5643 и 9127 Вот что я...

2
murderer
3319 / 1465 / 134
Регистрация: 06.10.2010
Сообщений: 3,217
19.10.2012, 07:25 2
В числах с плавающей точкой старший бит определяет знак.

Смена знака для одинарной точности
Assembler
1
2
3
4
align 16
signmask dd 80000000h,80000000h,80000000h,80000000h
...
xorps xmm0,dqword[signmask]
Для двойной точности
Assembler
1
2
3
4
align 16
signmask dq 8000000000000000h,8000000000000000h
...
xorpd xmm0,dqword[signmask]
0
BratSinot
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 8
20.10.2012, 00:05  [ТС] 3
Цитата Сообщение от murderer Посмотреть сообщение
В числах с плавающей точкой старший бит определяет знак.
xor это первое что я сделал, я же не совсем дурак Просто кто-то отписался про dp. Правда практически во всех местах где нужно знак менять, перед этим происходит умножение, а потом суммируется. Поэтому dp самое оно.
P.S. Не в числах с плавающей точкой, а в стандарте IEEE 754.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2012, 00:05

Функция разделения упакованных чисел
Многие функции Windows API возвращают переменную типа Long, содержащую два...

SSE оптимизация для четырех упакованных чисел с одинарной точностью
Доброго времени суток! Есть 4-ре упакованных числа с одинарной точностью в...

Вычисление с повышенной точностью для упакованных чисел ДДК сложение и умножение
Всем привет! Помогите, пожалуйста, сделать семестровую. Тема: Вычисление с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru