|
|
| Посл.отвђт | Сообщен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 Так значит говоришь по скорости выйгрыша нет? Гм... А ты мой ответ в другую тему смотрел? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.089 |