In vino veritas

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

Сообщение 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]
Конкретно в моем примере используются многочлены Чебышева, объясняют пусть математики, ты ведь хотел понять как это реализовать в железе, следовательно нужно понять лишь как в нем реализовать несколько математических операций.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

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

Сообщение Reflector »

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

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

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

Сообщение BOB51 »

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

Сообщение Reflector »

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

Сообщение 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 он все равно ничего писать не будет?
Я писать ни чего не буду, мне интересно именно уровень матиматики, единиц и нолей.
„Выживает не самый сильный и не самый умный, а тот, кто лучше всех приспосабливается к изменениям.“
— Чарлз Дарвин
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

Сообщение Reflector »

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

Сообщение ARV »

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

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

Сообщение dosikus »

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

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

Сообщение asvhmao »

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

Сообщение dosikus »

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

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

Сообщение asvhmao »

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

Сообщение Reflector »

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

Сообщение asvhmao »

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


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

Сообщение dosikus »

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


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

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

Сообщение asvhmao »

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

Сообщение Reflector »

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

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

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

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