Отговори на тема  [ 33 мнения ]  Отиди на страница 1, 2, 3  Следваща
cortex-m0/armv6m асемблерски библиотечки 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение cortex-m0/armv6m асемблерски библиотечки
като гледам в newlib-a няма никой за куртекс-М0 (не че съм изненадан) та ще се наложи да си го портвам, ама преди да съм запретнал ръкави викам да попитам ако случайно някой е попадал на читави имплементации за куртекс-0 на udiv(), udiv10() и там разните вариации за деление, модул и т.н. включая и long long...


Съб Окт 25, 2014 9:53 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Авг 07, 2012 3:16 pm
Мнения: 331
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
arm_cortexM0l_math.lib (Little endian on Cortex-M0 / CortexM0+)
arm_cortexM0b_math.lib (Big endian on Cortex-M0 / CortexM0+)

Една от тези двете няма ли да свърши работа :? Оптимизирани мат. библиотеки от ARM - http://www.keil.com/pack/doc/CMSIS/DSP/html/index.html .


Съб Окт 25, 2014 10:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
виж в eCos ... трябва да ги има, но не знам доколко са изпипани

едит: май имат поддръжка само за M3, за М0 не виждам ...

_________________
Мразя да мразя ...


Нед Окт 26, 2014 1:29 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
Знам, че много ги обичаш, ама CMSIS гледа ли? Мисля, че имаха оптимизирани математики за всички куртекси...

Опс, сега проверих, то там било тежка артилерия, матрици, комплексни числа и т.н. Простички няма.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Нед Окт 26, 2014 11:46 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
С изключение на делението на 10 това са функции от стандартната библиотека... CMSIS по принцип е "над" тези неща.
Нормално би трябвало АРМ да ги напишат и вероятно са ги написали в Кейл, а другите да се спасяват кой как може...

Всъщност не знам за М0 дали изобщо може да се оптимизират тия функции, ако не то няма смисъл да се пишат, може и заради това да не си ги написали.... Макар че за М3-4 и А-сериите със сигурност има смисъл, ама още не всичко е оправено. Както и да е, аз може би 64-бит аритметиката ще я разкарам, евентуално само деление на 10 ще се опитам да оптимизирам...


Нед Окт 26, 2014 2:01 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Сря Фев 08, 2006 3:32 pm
Мнения: 253
Местоположение: Благоевград
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
Имам спомени че наскоро от някъде ми попадна ADS , ама даже не се сещам къде съм го забутал. Но не знам там дали ги има на асм или са на либове направо. В понеделник ще проверя.


Нед Окт 26, 2014 3:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
те такова търсех...


Вто Окт 28, 2014 4:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
хе-хе

CMSIS имат много интересна имплементация на CLZ:

Код:
  static __INLINE uint32_t __CLZ(
  q31_t data)
  {
    uint32_t count = 0;
    uint32_t mask = 0x80000000;

    while((data & mask) == 0)
    {
      count += 1u;
      mask = mask >> 1u;
    }

    return (count);

  }


не дай си боже data да е равно на 0 :-)


Вто Окт 28, 2014 6:43 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
само тази функция ли е бъгава? :-)


Вто Окт 28, 2014 7:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
Бъгливци ... те това е истинския алгоритъм:

for(count=0;data;count++) data &= data-1;

_________________
Мразя да мразя ...


Вто Окт 28, 2014 9:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
palavrov написа:
Бъгливци ... те това е истинския алгоритъм:

for(count=0;data;count++) data &= data-1;

почти си го нацелил, само дето цикълът е малко по-различен и сметките също :-)


Вто Окт 28, 2014 11:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
miro_atc написа:
palavrov написа:
Бъгливци ... те това е истинския алгоритъм:

for(count=0;data;count++) data &= data-1;

почти си го нацелил, само дето цикълът е малко по-различен и сметките също :-)

Оффф ... CLZ = count leading zeros ... това дето съм го написал е за броене на вдигнатите битове ... това за водещите нули даже е по лесно :)

_________________
Мразя да мразя ...


Сря Окт 29, 2014 3:14 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
лесно-лесно, ама тва лесно онова лесно, а пък докато подредя всичките "леснотии" лесно си губя времето ;-)


Сря Окт 29, 2014 10:07 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
Хрумна ми как може да се направи това броене супер елегантно с двоично търсене - довечера ще го разпиша на C и ще го постна ... т.е. за 64 бита с 6 итерации намираш колко са водещите нули ;)

_________________
Мразя да мразя ...


Сря Окт 29, 2014 11:32 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Яну 19, 2007 9:16 am
Мнения: 1063
Местоположение: путинофили: "иди н***й"
Мнение Re: cortex-m0/armv6m асемблерски библиотечки
miro_atc написа:
хе-хе

CMSIS имат много интересна имплементация на CLZ:

Код:
  static __INLINE uint32_t __CLZ(
  q31_t data)
  {
    uint32_t count = 0;
    uint32_t mask = 0x80000000;

    while((data & mask) == 0)
    {
      count += 1u;
      mask = mask >> 1u;
    }

    return (count);

  }


не дай си боже data да е равно на 0 :-)


сигурен ли си, че някъде няма декларирано нещо като:
#define CLZ(data) (data ? __CLZ(data) : 0)

иначе всеки фрагмент от код може да бъде "смешен"


palavrov написа:
Хрумна ми как може да се направи това броене супер елегантно с двоично търсене - довечера ще го разпиша на C и ще го постна ... т.е. за 64 бита с 6 итерации намираш колко са водещите нули ;)

твоя "алгоритъм" е елементарен, но едва ли някой би го оценил!
трудността му е log2(64), но трябва да ползваш 32bit, 16bit, 8bit, 4bit, 2bit, 1bit операции ... и като нищо ефективността му ще отиде по дяволите


Сря Окт 29, 2014 12:05 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 33 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни