· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› Вещественные числа

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июл 15, 2003 19:20:36

Проблема такая!! Есть 2 программки на С и на Асме!!
Есть 2 массива
float mas1[4]={1.11,2.22,3.33,4.44}
float mas2[4]={21.011, 21.011, 21.011, 0}
массив для результата:
float rez;
------------------
берем и перемножаем все элементы т.е. 1 с 1, 2 со 2, 3 с 3, 4 с 4 и записываем в массив rez!!!
на С результат будет выглядеть так:
23.322210, 46.644420, 69.966627, 0
а на асме с помощью сопроцессора и с помощью SSE получается одинаково (даже если менять значения округления в регистре управления):
23.322210, 46.644421, 69.966629
Можно вычислить при помощи калькулятора, получится:
23.32221, 46.64442, 69.96663

Вот!!! Если кто знает!! Как сделать чтобы результат был одинаковым на С и на Асме??????


Дата: Июл 15, 2003 19:38:01

Дизассемблировать прогу на C (HIEW поддерживает SSE, вроде). Может там вообще не используется сопр...


Дата: Июл 15, 2003 19:39:24

Так вроде бы только это и остается!!!


Дата: Июл 15, 2003 19:47:49 · Поправил: Quantum

Возможно, чуть проще будет это сделать в отладчике (не в HIEW).


Дата: Июл 15, 2003 19:48:47

Я щас SoftIce посмотрю!!


Дата: Июл 15, 2003 19:55:31

За VC или Borland не знаю (какой там у вас компилятор C?), но точно помню, что Code Warrior -- мой любимый компилятор для микроконтроллеров и не только -- до недавнего времени напрочь отказывался поддерживать SIMD.


Дата: Июл 15, 2003 20:16:22

А ты с КЭШЕМ работал?


Дата: Июл 15, 2003 20:41:54

Я вообще не знал, что с ним можно работать напрямую. Поэтому внимательно слежу за развитием этой темы :-)


Дата: Июл 15, 2003 20:58:54

Что значит не знал!!! Целый ряд команд есть!!! Только я не знаю как ими пользоваться!! Пробывал но от этого становилось только хуже!!!


Дата: Июл 16, 2003 02:50:26

emergenter
Что значит не знал!!!
Ну, не знал!!! Меня тут даже чайником обзывают :-)


Дата: Июл 16, 2003 12:15:19

emergenter
Господа, эти команды до одного места, смотрите 8 главу в Агнере.


Дата: Июл 16, 2003 12:16:30

emergenter
Как сделать чтобы результат был одинаковым на С и на Асме??????
Например, ограничиться пятью знаками за запятой, т.е. округлить пятый на основании шестого.
Пятый знак, потому что перемножаются числа, у которых два и три знака за запятой, т.е. нет смысла ловить большую точность.
Разница в шестом знаке обусловлена способом хранения/представления вещественных чисел.


Дата: Июл 16, 2003 12:52:28

emergenter
Во первых какая у тебя точность?
Хотя для SSE это побарабану. Но я не могу понять для чего тебе ОДИНАКОВОСТЬ?


Дата: Июл 16, 2003 15:19:28

Да просто так!! Хочется чтобы точно было!!! P2M так а технически как это сделать я уже все попробывал!!!


Дата: Июл 16, 2003 15:32:16

emergenter
Так значит говоришь по скорости выйгрыша нет?
Гм... А ты мой ответ в другую тему смотрел?

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.089