реклама на сайте
подробности

 
 
> К вопросу об оптимизации инлайн-ассемблера., Не всё так шоколадно...
AHTOXA
сообщение Oct 25 2009, 12:49
Сообщение #1


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я много раз читал, что инлайн-ассемблер в gcc замечательно оптимизируется. Да и глядя в дизассемблер, убеждался, что это так и есть. Но недавно наткнулся на материал про встроенные функции GCC, и решил их испытать.
Заменил на пробу
Код
INLINE inline byte GetHighPriority(TProcessMap pm)
  {
      dword clzero;
      asm ("clz\t%0, %1": "=r" (clzero): "r" (pm));
      return (31 - clzero);
}

на
Код
INLINE inline byte GetHighPriority(TProcessMap pm)
    {
        return (31 - __builtin_clz(pm));
    }

Собственно код, генерируемый компилятором для этой функции - не поменялся. Но. Размер проекта уменьшился на 40 байт. Это для пяти вызовов данной функции. Это конечно мелочи для проекта на 16 Кб, но тем не менее. Насколько я понял по листингу, при использовании __builtin_clz() компилятор несколько более оптимально перетасовывает окружающие куски кода.
Собственно, вывод мой таков - несмотря на отличную оптимизацию встроенного ассемблера, компилятор не может (или не хочет) применять к нему все возможные методы оптимизации. Возможно, этот вывод поспешен, потому прошу тех, кто придумает куда можно применить вышеуказанные встроенные функции применить их, и рассказать о результатахsmile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Oct 27 2009, 11:22
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(GetSmart @ Oct 27 2009, 15:35) *
Довольно странно в GCC выглядит сочетание volatile asm("nop"), причём IAR такое сочетание не переваривает.


Это потому что IAR не умеет оптимизировать ассемблерные вставкиsmile.gif

Потому:
Цитата(klen @ Oct 27 2009, 14:53) *
вывод один - все работает так как нада, и мы это ПОНИМАЕМ smile.gif


tongue.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 07:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016