Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: вопрос по регистровой памяти
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
skopus
Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого?
defunct
Цитата(skopus @ Feb 16 2006, 13:39) *
Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого?


32*8 - обозначает тридцать два восьмиразрядных регистра. соответственно IAR использует все регистры и так.
prottoss
Цитата(skopus @ Feb 16 2006, 18:39) *
Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого?


Как правильно заметил defunct в МК AVR ВСЕГО 32 регистра общего назначения :-).

В IAR под нужды программиста можно задействовать часть регистров (R4..R15: для Си). Для этого надо зайти в опции проекта (Project->Options->Compiler->Code). Кроме того к регистрам можно обращаться и как к ячейкам памяти с адреса 0х00 по 0х1F. Соответственно, и структуры там можно размещать, но вот вопрос - нужно ли это. По моему кроме хромающего кода, полного глюков, Вы ни чего не получите. Лучше добиваться повышения скорости другими методами. Например применением более эффективного алгоритма :-)
IgorKossak
prottoss , чтобы код не хромал и не было глюков надо читать описание на компилятор, где говорится, что залочивание более девяти регистров может привести к конфликтам с некоторыми библиотечными функиями (т. к. библиотеки компилировались и собирались без залочивания регистров).
Сам использую залочивание во многих проектах, даже весьма сложных. Пишу на С++ с применением ОСРВ.
Никогда не наблюдал глюков от залочивания.
prottoss
Цитата(IgorKossak @ Feb 16 2006, 20:37) *
prottoss , чтобы код не хромал и не было глюков надо читать описание на компилятор, где говорится, что залочивание более девяти регистров может привести к конфликтам с некоторыми библиотечными функиями (т. к. библиотеки компилировались и собирались без залочивания регистров).
Сам использую залочивание во многих проектах, даже весьма сложных. Пишу на С++ с применением ОСРВ.
Никогда не наблюдал глюков от залочивания.


Когда я говорил про хромой код, я имел ввиду расположение в регистровой памяти структур, тема то про это. А залочивание регистров я и сам использую, тоже безглючно.
IgorKossak
Цитата(prottoss @ Feb 16 2006, 17:22) *
Когда я говорил про хромой код, я имел ввиду расположение в регистровой памяти структур, тема то про это. А залочивание регистров я и сам использую, тоже безглючно.

Т. е. если Вы говорили о стиле программирования, то полностью с Вами согласен.
За исключением крайне необходимых моментов подобных трюков лучше не делать.
Что касается использования регистров компилятором, то лучше для себя принять, что ему (компилятору) виднее.
viakon
Цитата(skopus @ Feb 16 2006, 16:39) *
Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого?


Обращение к регистровой памяти, такое же как к внутреннему ОЗУ. Собственно это ОЗУ и есть, просто система команд позволяет непосредственно адресоваться и производить операции только с первыми 32 ячейками.
beer_warrior
Вообще-то AVR это RISC процессор,
а идеология RISC как раз и состоит в минимизации фокусов с регистрами
и максимизации простых операций load/store.
Rst7
Цитата(beer_warrior @ Feb 17 2006, 09:45) *
Вообще-то AVR это RISC процессор,
а идеология RISC как раз и состоит в минимизации фокусов с регистрами
и максимизации простых операций load/store.


Ух ты, вот это формулировка wink.gif

А пояснить поподробней wink.gif А то я всегда считал, что для RISC важны именно операции регистр-регистр, т.к. load/store - это медленно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.