|
Макросы в IAR EWAVR, v5.40.1 |
|
|
|
 |
Ответов
|
Feb 8 2010, 20:03
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Цитата Непонятно, как именно вообще макросы могут сэкономить память программ (или вообще какую-нибудь память). И как ваши конкретные макросы её экономят. Очень просто. Можно написать макрос как подпрограмму. Например, подпрограмма выбора Vref в ADC на основе всех возможных сочетаний. Это займет значительный кусок кода. Но потом выяснится, что применяется данная программа только один раз для установки Vref = 1v1. Ясное дело, это неэффективно. Если такую задачу решать с помощью макроса, то экономия памяти налицо. Вот почему для многих установок ADC полезно все же писать макросы, но для установки мультиплексора, возможно, подпрограмму (это зависит уже от конкретики задачи)... Цитата Дело в том,что независимо от аргумента ваша фича скомпилируется в кучу операторов. С чего бы это? Какая куча? Скомпилируется только то, что соотв. условию по аргументу... А посути-то есть что сказать? Если есть желание попробовать, прилагаю код...
|
|
|
|
|
Feb 8 2010, 20:26
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(ivainc1789 @ Feb 8 2010, 23:03)  А посути-то есть что сказать? 1) По сути... где фигурные скобки?! 2) Еще раз по сути ... ИАР имеет очень удобную фичу отладки макросов, которая заключается в выводе в файл текста после препроцессора. 3) И третий раз по сути ... Ваши общие рассуждения о расходе памяти программ в случае оформления фрагмента кода как подпрограммы без оговорок о оптимизации и "инлайнирование" неверны. Программист может (и, пожалуй, обязан) написать так, что в любом случае память программ будет расходоваться одинаково экономно.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Feb 8 2010, 21:21
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Цитата(Dog Pawlowa @ Feb 8 2010, 23:26)  1) По сути... где фигурные скобки?! 2) Еще раз по сути ... ИАР имеет очень удобную фичу отладки макросов, которая заключается в выводе в файл текста после препроцессора. 3) И третий раз по сути ... Ваши общие рассуждения о расходе памяти программ в случае оформления фрагмента кода как подпрограммы без оговорок о оптимизации и "инлайнирование" неверны. Программист может (и, пожалуй, обязан) написать так, что в любом случае память программ будет расходоваться одинаково экономно. По всем трем пунктам большое спасибо. Писал все это под утро, уж на автопилоте. Только это что-то мало помогло. Решил упростить все до безобразия и вот... Что же еще упускаю?
2) если вы про пояснения в листинге, то там то же, что и в окне Build Цитата 3) Программист может (и, пожалуй, обязан) написать так То есть вы считаете, что программист заранее ОБЯЗАН знать, что лучше применить макросы или подпрограммы? По-моему, это не так тривиально и возможно только когда окончательно устаканится код... Лично меня как-то все время больше "тянет" на подпрограммы и уже позже, начинаю замечать, что вызовов не так много и возможно макросы отработают лучше...
|
|
|
|
|
Feb 9 2010, 09:33
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(ivainc1789 @ Feb 9 2010, 01:21)  То есть вы считаете, что программист заранее ОБЯЗАН знать, что лучше применить макросы или подпрограммы? Ну нет же! Вы воюете с ветряными мельницами, выискивая несуществующую разницу. Про pragma inline=forced Вы слышали? Она позволяет сделать так, что содержимое функции будет вставлено в текст программы. Потом, после оптимизации Вы получите код, идентичный написанному с использованием макросов. Все одно, разница только в синтаксисе. У Вас SETBIT() - это макрос, а у меня SetPin() - это функция, а компилируются они одинаково.
--------------------
Уходя, оставьте свет...
|
|
|
|
Сообщений в этой теме
ivainc1789 Макросы в IAR EWAVR Feb 8 2010, 06:54 Палыч Цитата(ivainc1789 @ Feb 8 2010, 09:54) По... Feb 8 2010, 07:05 SasaVitebsk Цитата(ivainc1789 @ Feb 8 2010, 10:54) В ... Feb 8 2010, 08:19 _Pasha Пример, заменяющий первую половину использованной ... Feb 8 2010, 21:21 ivainc1789 Цитата(_Pasha @ Feb 9 2010, 00:21) Пример... Feb 8 2010, 21:44  _Pasha Цитата(ivainc1789 @ Feb 9 2010, 00:44) Но... Feb 8 2010, 22:14   ivainc1789 Цитата(_Pasha @ Feb 9 2010, 01:14) Потому... Feb 9 2010, 15:23    AHTOXA Цитата(ivainc1789 @ Feb 9 2010, 20:23) Из... Feb 9 2010, 15:38     ivainc1789 Цитата(AHTOXA @ Feb 9 2010, 18:38) Уберит... Feb 9 2010, 16:32    Dog Pawlowa Цитата(ivainc1789 @ Feb 9 2010, 19:23) вы... Feb 9 2010, 20:54  SasaVitebsk Цитата(ivainc1789 @ Feb 9 2010, 01:44) То... Feb 9 2010, 01:54 SasaVitebsk +1.
Не считаю себя профессионалом в данном вопросе... Feb 9 2010, 10:27 rezident На последнем скриншоте из сообщения #13 в макросах... Feb 9 2010, 17:26 ivainc1789 Цитата(rezident @ Feb 9 2010, 20:26) На п... Feb 9 2010, 19:09  rezident Цитата(ivainc1789 @ Feb 10 2010, 00:09) И... Feb 9 2010, 20:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|