Например TDA7294

Форум РадиоКот • Просмотр темы - Регистровая переменная в IAR
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт июл 25, 2025 23:40:54

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


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 13 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Регистровая переменная в IAR
СообщениеДобавлено: Чт май 21, 2009 15:44:20 
Открыл глаза

Зарегистрирован: Пт янв 30, 2009 18:02:40
Сообщений: 70
Рейтинг сообщения: 0
Собственно, сабж. Как задать размещение локальной переменной в регистре (неважно в каком, лишь бы не в RAM!)?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт май 21, 2009 20:23:24 
Опытный кот
Аватар пользователя

Зарегистрирован: Вс янв 18, 2009 21:12:49
Сообщений: 703
Рейтинг сообщения: 0
Есть ли смысл в этом? При включении оптимизации компилятор сам старается разместить все локальные в регистрах.
Глобальные и статические в регистрах ещё как то понятно, но локальные зачем указывать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт май 22, 2009 08:53:41 
Открыл глаза

Зарегистрирован: Пт янв 30, 2009 18:02:40
Сообщений: 70
Рейтинг сообщения: 0
asteroid7 писал(а):
Есть ли смысл в этом? При включении оптимизации компилятор сам старается разместить все локальные в регистрах.
Глобальные и статические в регистрах ещё как то понятно, но локальные зачем указывать?

Понятно, что старается... Но у меня есть функция с несколькими локальными переменными, от скорости обращения к которым зависит, собственно, работоспособность изделия. Вот и хотелось бы иметь твёрдую гарантию, что они обязательно будут регистровыми, независимо ни от чего.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт май 22, 2009 09:07:48 
Собутыльник Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 47
Зарегистрирован: Пн апр 06, 2009 19:33:29
Сообщений: 2512
Откуда: Молдова, Кишинев
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В Си есть модификатор register для этого, то есть:
register int variable;

Кроме register для avr имеет место еще flash, eeprom (эти в кодвижне точно есть, в яре хз)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт май 22, 2009 11:15:57 
Потрогал лапой паяльник
Аватар пользователя

Карма: 2
Рейтинг сообщений: 1
Зарегистрирован: Пн мар 20, 2006 13:05:08
Сообщений: 336
Рейтинг сообщения: 0
в gcc volatile вроде помещает переменную в регистр.

_________________
Я просто верю в то, что рушить догмы - лучший способ не стареть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт май 22, 2009 11:48:55 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
xelos писал(а):
в gcc volatile вроде помещает переменную в регистр.
нет, volatile никогда нигде не давало гарантии того, что переменная окажется в регистре. volatile означает, что при любом использовании переменной надо обязательно считать ее значение. то есть для обычной переменной Var при вычислении X = Var * B + E * Var; компилятор генерирует код, который математически тождественен выражению X = Var * (B + E); а для volatile Var будет вычисляться именно так, как записано: оба упоминания переменной приведут к тому, что из памяти будут извлечены значения 2 раза.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт май 22, 2009 12:24:36 
Открыл глаза

Зарегистрирован: Пт янв 30, 2009 18:02:40
Сообщений: 70
Рейтинг сообщения: 0
BCluster писал(а):
В Си есть модификатор register для этого

Я сейчас прочитал про него, он определяет, что переменная должна предпочтительно помещаться в регистр (если я правильно понял). Т.е. он как-бы советует... А мне хочется твёрдой уверенности...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт май 22, 2009 13:38:08 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я бы советовал просто посмотреть листинг, чтобы увидеть, как с этими переменными компилятор поступает. локальные переменные компилятор стремится разместить в регистрах, и только слишком большое их обилие может помешать это сделать.

кроме того, по моему личному опыту, попытки перемудрить компилятор редко приводят к успеху - ваши попытки что-то улучшить при помощи модификатора register скорее всего либо не приведут вообще ни к какому эффекту (в плане увеличения быстродействия), либо дадут отрицательный результат. просто используйте максимально возможности оптимизатора по скорости - и все. во всяком случае, без анализа листинга не стоит и пытаться "оптимизировать" самостоятельно...

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт май 22, 2009 15:34:37 
Собутыльник Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 47
Зарегистрирован: Пн апр 06, 2009 19:33:29
Сообщений: 2512
Откуда: Молдова, Кишинев
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Советует то оно да - но если у вас нет более предпочитаемых по мнению компилятора переменных она будет записана в регистр.
В общем, у меня она всегда была в регистре. Ну... Других вариантов нет, звиняйте) Посмотрите, главное чтоб по скорости все работало - реально то все равно будет оно в регистре или нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт май 22, 2009 20:55:35 
Опытный кот
Аватар пользователя

Зарегистрирован: Вс янв 18, 2009 21:12:49
Сообщений: 703
Рейтинг сообщения: 0
mackerel писал(а):
... хотелось бы иметь твёрдую гарантию, что они обязательно будут регистровыми, независимо ни от чего.

Вас спасёт только ASM. IAR квалификатор "register", обычно, игнорирует.
Ну и как вариант, считаю его извращением, сделать переменную глобальной и объявить её через "__regvar".


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 12:44:21 
Открыл глаза

Зарегистрирован: Пт янв 30, 2009 18:02:40
Сообщений: 70
Рейтинг сообщения: 0
Ну, глобальными эти переменные делать как-то не хочется... Наверно, всё-таки буду выходной листинг проверять, убеждаясь, что в нужной функции нужные переменные таки регистровые.
Всем спасибо за участие...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб май 23, 2009 18:05:38 
Собутыльник Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 47
Зарегистрирован: Пн апр 06, 2009 19:33:29
Сообщений: 2512
Откуда: Молдова, Кишинев
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вы бы проверяли просто достаточно ли производительности - если ее хватает не все ли равно где переменная?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн май 25, 2009 10:07:46 
Открыл глаза

Зарегистрирован: Пт янв 30, 2009 18:02:40
Сообщений: 70
Рейтинг сообщения: 0
BCluster писал(а):
Вы бы проверяли просто достаточно ли производительности

При использовании переменных в RAM - однозначно недостаточно, в чём и фишка.
Вообще-то без дополнительных мер и этого не хватает - приходится ещё циклы линейными участками заменять кое-где... макросы там... и т. п. Но это всё понятно как сделать.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 13 ] 

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y