Easyelectronics.ru

Электроника для всех
Текущее время: 19 сен 2019, 07:27

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Небольшой эксперимент в написании кода на си. Avr
СообщениеДобавлено: 24 сен 2014, 13:41 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 617
Откуда: Челябинск
fr0ster писал(а):
По идее вклинить ассемблерный код в тело Сишной функции с помощью inline assembler.

Плохая идея, однако.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой эксперимент в написании кода на си. Avr
СообщениеДобавлено: 24 сен 2014, 13:47 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 617
Откуда: Челябинск
demiurg1978 писал(а):
Как заставить компилятор применить эту команду? Я пересел на си, и как бы уже забил на подсчет тактов и байтов. Но порой бывают моменты, хотелось бы соптимизировать.
Вообще-то, стандартные библиотечные функции обычно пишут на асм. Если же говорить о компиляторах, то все зависит от конкретной их реализации. В gcc, скорее всего, это вряд ли получится. А вот в IAR нужно посмотреть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой эксперимент в написании кода на си. Avr
СообщениеДобавлено: 24 сен 2014, 23:59 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1578
Откуда: Киев
Bill писал(а):
Steel.ne писал(а):
Чо не так? Раз разговор о скорости выполнения - вот основной цикл memmove:
Код:
  cc:   02 90           ld      r0, -Z
  ce:   0e 92           st      -X, r0
  d0:   41 50           subi    r20, 0x01       ; 1
  d2:   50 40           sbci    r21, 0x00       ; 0
  d4:   d8 f7           brcc    .-10            ; 0xcc <memmove+0x14>

быстрее ни указателями и массивом не будет. Да, будут накладные расходы на вызов функции, но они разовые, а не в цикле

Между прочим, эту функцию можно сделать побыстрее, если вместо пары команд subi-sbci использовть одну инструкцию sbiw. Или нет?


Эх, оптимизаторы. sbiw - 2 такта и вдобавок не со всеми регистрами, subi-sbci - по одному и работают с любыми регистрами. Что мы оптимизируем?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Небольшой эксперимент в написании кода на си. Avr
СообщениеДобавлено: 25 сен 2014, 02:12 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Steel.ne писал(а):
subi-sbci - по одному и работают с любыми регистрами
Придерусь к словам :-) Не совсем с любыми, а только с "верхними" (R16..31).

Кстати, ещё одно преимущество пары subi+sbci - регистры не обязательно должны иметь смежные номера, иногда это нужно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB