In vino veritas

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: In vino veritas

Сообщение Reflector »

[uquote="BOB51",url="/forum/viewtopic.php?p=3411174#p3411174"]Пример исходника на чистом ассемблере для АРМ (а не распечатку Сишного листинга) приложите.
:wink:
Я понимаю, что под Си это не вопрос в принципе.[/uquote]

Код: Выделить всё

float sin(float x)	// -Pi..Pi
{
    float x2 = x * x;
    float p7 = -0.00000002f * x2 + 0.000002522f;
    float p5 = p7 * x2 - 0.000173505f;
    float p3 = p5 * x2 + 0.006620879f;
    float p1 = p3 * x2 - 0.101321180f;
    return (x - Pi) * (x + Pi) * p1 * x;
}
Спойлер

Код: Выделить всё

vldr s14, [sp, #28] 
vldr s7, [pc, #636]
vldr s8, [pc, #636]
vldr s9, [pc, #636]
vldr s12, [pc, #636]
vldr s10, [pc, #636]
vldr s15, [pc, #636]
vmul.f32 s13, s14, s14 
vsub.f32 s11, s14, s12 
vfma.f32 s8, s13, s7 
vadd.f32 s12, s14, s12 
vfma.f32 s9, s13, s8 
vmul.f32 s12, s11, s12 
vmov.f32 s11, s10 
vfma.f32 s11, s13, s9 
vfma.f32 s15, s13, s11 
vmul.f32 s15, s15, s12 
vmul.f32 s15, s15, s14
vstr s15, [sp, #24]
[uquote="asvhmao",url="/forum/viewtopic.php?p=3411192#p3411192"]На пальцах можно объяснить как это работает? Из теории попалось только ряд Тейлора, в виде степенных рядов.[/uquote]
Конкретно в моем примере используются многочлены Чебышева, объясняют пусть математики, ты ведь хотел понять как это реализовать в железе, следовательно нужно понять лишь как в нем реализовать несколько математических операций.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: In vino veritas

Сообщение BOB51 »

Но это же Си, а не ассемблер - я уже про то говорил, что спрашивающего интересует АССЕМБЛЕРНОЕ воплощение.
И не на математическом сопроцессоре, а "стандартным арсеналом" типового 8-разрядного МК.
8)
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: In vino veritas

Сообщение Reflector »

[uquote="BOB51",url="/forum/viewtopic.php?p=3411209#p3411209"]Но это же Си, а не ассемблер - я уже про то говорил, что спрашивающего интересует АССЕМБЛЕРНОЕ воплощение.[/uquote]
Чем спрашивающему листинг на ассме не угодил учитывая, что под ARM с FPU он все равно ничего писать не будет?
И не на математическом сопроцессоре, а "стандартным арсеналом" типового 8-разрядного МК.
Уважаемый, следовало бы изначально изъясняться яснее, потому как исходник на чистом ассемблере для 32-х битного АРМ и типового 8-разрядного МК - это в принципе несопоставимые вещи :)
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: In vino veritas

Сообщение Мурик »

BOB51 писал(а):И не на математическом сопроцессоре, а "стандартным арсеналом" типового 8-разрядного МК.
Вы же просили.
BOB51 писал(а):Пример исходника на чистом ассемблере для АРМ
Что попросили, то и дали. В STM32F4 и не только есть математический сопроцессор, для чисел с плавающей точкой.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: In vino veritas

Сообщение BOB51 »

Ясненько - сунули команды математического сопроцессора и рады.
8)
Ох уж та реклама АРМов.
А ближе к примитиву, что человеку нужно?
Таки проще табличного варианта похоже и не предвидится.
:sleep:
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: In vino veritas

Сообщение Reflector »

[uquote="BOB51",url="/forum/viewtopic.php?p=3411230#p3411230"]Ясненько - сунули команды математического сопроцессора и рады.
Ох уж та реклама АРМов.[/uquote]
Ну да, FPU+DSP, $2.8 штучка, десяток по $2.2.
Аватара пользователя
asvhmao
Друг Кота
Сообщения: 3716
Зарегистрирован: Чт мар 07, 2013 20:39:17
Откуда: Краснодар

Re: In vino veritas

Сообщение asvhmao »

Reflector писал(а):
Спойлер

Код: Выделить всё

float sin(float x)   // -Pi..Pi
{
    float x2 = x * x;
    float p7 = -0.00000002f * x2 + 0.000002522f;
    float p5 = p7 * x2 - 0.000173505f;
    float p3 = p5 * x2 + 0.006620879f;
    float p1 = p3 * x2 - 0.101321180f;
    return (x - Pi) * (x + Pi) * p1 * x;
}
Ладно с ней с матиматикой, а как работает этот код?
Reflector писал(а): Чем спрашивающему листинг на ассме не угодил учитывая, что под ARM с FPU он все равно ничего писать не будет?
Я писать ни чего не буду, мне интересно именно уровень матиматики, единиц и нолей.
„Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“
— Чарлз Дарвин
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: In vino veritas

Сообщение Мурик »

BOB51 писал(а):Ясненько - сунули команды математического сопроцессора и рады.
Почему сунули? Ведь написали же.
Reflector писал(а):6 сложений, 7 умножений, на STM32 с FPU синус тактов за 30 считает с неплохой точностью.
FPU.
BOB51 писал(а):Ох уж та реклама АРМов.
Это все равно что в начале 90-тых, имея Радио-86РК писать "Ох уже эта реклама Pentium 1".
В STM32 есть математический сопроцессор и не только он, а в 8-ми битниках его нет. Вам нужно решить, пользоваться новым или устаревшим.
BOB51 писал(а):Таки проще табличного варианта похоже и не предвидится.
Для тех МК под которые вы пишите, может быть, а для современных есть другие варианты.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: In vino veritas

Сообщение Reflector »

[uquote="asvhmao",url="/forum/viewtopic.php?p=3411255#p3411255"]Ладно с ней с матиматикой, а как работает этот код?[/uquote]
Я не знаю что объяснять, если абстрагироваться от математического обоснования, то что останется?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: In vino veritas

Сообщение ARV »

:facepalm:
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: In vino veritas

Сообщение dosikus »

[uquote="asvhmao",url="/forum/viewtopic.php?p=3411255#p3411255"]Я писать ни чего не буду, мне интересно именно уровень матиматики, единиц и нолей.[/uquote]

Изображение
Аватара пользователя
asvhmao
Друг Кота
Сообщения: 3716
Зарегистрирован: Чт мар 07, 2013 20:39:17
Откуда: Краснодар

Re: In vino veritas

Сообщение asvhmao »

Reflector, хотел уточнить что такое в коде "х" , а что "Рi".
„Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“
— Чарлз Дарвин
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: In vino veritas

Сообщение dosikus »

x - переменная float, аргумент функции
Pi - константа https://ru.wikipedia.org/wiki/%D0%9F%D0 ... %BB%D0%BE)

но вам это не поможет...
Аватара пользователя
asvhmao
Друг Кота
Сообщения: 3716
Зарегистрирован: Чт мар 07, 2013 20:39:17
Откуда: Краснодар

Re: In vino veritas

Сообщение asvhmao »

х - это градусы угла?
И почему не поможет?
„Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“
— Чарлз Дарвин
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: In vino veritas

Сообщение Reflector »

[uquote="asvhmao",url="/forum/viewtopic.php?p=3411330#p3411330"]х - это градусы угла?[/uquote]
Нет, аргумент там в радианах.
Аватара пользователя
asvhmao
Друг Кота
Сообщения: 3716
Зарегистрирован: Чт мар 07, 2013 20:39:17
Откуда: Краснодар

Re: In vino veritas

Сообщение asvhmao »

Работает! :)) :beer:


Изображение
„Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“
— Чарлз Дарвин
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: In vino veritas

Сообщение dosikus »

[uquote="asvhmao",url="/forum/viewtopic.php?p=3411330#p3411330"]И почему не поможет?[/uquote]
https://electronix.ru/forum/index.php?showtopic=65613


Ну и по поводу ваших скриншотов

Аватара пользователя
asvhmao
Друг Кота
Сообщения: 3716
Зарегистрирован: Чт мар 07, 2013 20:39:17
Откуда: Краснодар

Re: In vino veritas

Сообщение asvhmao »

Попробую в железе, там видно будет. Вроде не сильно страшно всё.
Про скриншоты, так быстрей, пишу с планшета, а компьютер рабочий, к интернету не подключен.
„Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“
— Чарлз Дарвин
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: In vino veritas

Сообщение Reflector »

Проверил без FPU, на Cortex-M3, где есть умножение 32 * 32 -> 64, всего в 2 раза медленнее, но они и сами в 2 раза дешевле.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: In vino veritas

Сообщение Мурик »

На 8-ми битниках особенно где нет аппаратной поддержки умножения и деления (PIC16 к примеру), будет очень медленно.
Закрыто

Вернуться в «Разные вопросы по МК»