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

 
 
> Оптимизация проекта в ARM, Прошу советов, мнений, выссказываний.
SasaVitebsk
сообщение Jun 17 2009, 11:19
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



bb-offtopic.gif
Некоторые моменты при изучении любого вопроса выпадают из поля зрения. У меня по крайней мере. Видимо мозги "отбрасывают" то что считают "несущественным". А определить что "существенно", а что нет - на этапе изучения предмета практически невозможно. Вот и получается ... smile.gif

Когда Си изучал, маленький раздел про дополнения в версии С99 - мозг выкинул. С stdint начал работать потому, что увидел в какой-то из библиотек GCC и мне понравилось. Даже не догадался, что эта библиотека есть в IAR. Работал тогда с AVR, а библиотека эта только в DLIB. То есть по умолчанию она не подключена. Поэтому я выдрал библиотеку из GCC, доработал напильником и пользовался. sad.gif
В детали не вникал.

Сейчас, в одной из веток, zltigo обратил внимание на типы int_least8_t и я бросился читать. Оказалось буквально 10 строк, которые я упустил. На книгу не фиг пенять. Просто, чтобы понять, надо через себя пропустить. Осмыслить необходимость и потом уже применять.

Но ведь таких моментов много.

Для AVR, я, на первом этапе, просматривал результирующие листинги, чтобы понять как писать на Си, чтобы компилятор генерил прогу найболее эффективно. Это неплохой способ изучения, но слишком долгий. Пока нарабатываются приёмы и появляются знания.
Сейчас перехожу к ARM. Понятно что есть особенности архитектуры. Они явно сказываются. Например вызов п/п совершенно по другому построен. Количество регистров другое и это сказывается. Система комманд и прочее.

Хотелось бы услышать рекомендации спецов, активно работающих с этими процами. Для повышения производительности результирующего кода.

1) Ну например. Для AVR передача параметров в п/п осуществляется ч/з регистры. Если не влазит, то ч/з стек. В связи с этим нецелесообразно было передавать большое количество параметров и оперировать с длинными параметрами. В некоторых случаях, я "укорачивал" параметры перед передачей ну и так далее. Хотелось бы узнать как эффективнее поступать здесь.

2) Стоит ли работать с "промежуточными типами" ну например int16. Насколько это усложняет жизнь процу?

3) Насколько хорошо проц работает с табличным пересчётом? В AVR я часто пользовался этим при сложных логических операциях, чтобы ускорить получение результата. Здесь я вижу система команд неплохо заточена под сложные операции. Например, то что у AVR отвратительно реализуется - это сдвиги на N разрядов. Здесь - песня. У меня этого много в проекте.
Вот например получение CRC8 таблично будет быстрее или медленнее чем прямым пересчётом. И на сколько.

Хотелось бы услышать советы, мнения выссказывания или ссылки.
Заранее благодарю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jun 17 2009, 11:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SasaVitebsk @ Jun 17 2009, 14:19) *
1) Ну например. Для AVR передача параметров в п/п осуществляется....

В певом приближении так-же. Вообще передавать большое количество параметров зачем? Эта функция вызыватсся много раз? Нет? Тогда лююое количество параметров и инлайнить. Либо у меня в таких кусках со многими перемеными хорошо используются макросы.
Цитата
2) Стоит ли работать с "промежуточными типами" ну например int16. Насколько это усложняет жизнь процу?

В общем случае, естественно, нет.
Цитата
Вот например получение CRC8 таблично будет быстрее или медленнее чем прямым пересчётом. И на сколько.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:25
Рейтинг@Mail.ru


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