Перейти к содержанию
    

вопрос по регистровой памяти

Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого?

 

32*8 - обозначает тридцать два восьмиразрядных регистра. соответственно IAR использует все регистры и так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого?

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

prottoss , чтобы код не хромал и не было глюков надо читать описание на компилятор, где говорится, что залочивание более девяти регистров может привести к конфликтам с некоторыми библиотечными функиями (т. к. библиотеки компилировались и собирались без залочивания регистров).

Сам использую залочивание во многих проектах, даже весьма сложных. Пишу на С++ с применением ОСРВ.

Никогда не наблюдал глюков от залочивания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

prottoss , чтобы код не хромал и не было глюков надо читать описание на компилятор, где говорится, что залочивание более девяти регистров может привести к конфликтам с некоторыми библиотечными функиями (т. к. библиотеки компилировались и собирались без залочивания регистров).

Сам использую залочивание во многих проектах, даже весьма сложных. Пишу на С++ с применением ОСРВ.

Никогда не наблюдал глюков от залочивания.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Т. е. если Вы говорили о стиле программирования, то полностью с Вами согласен.

За исключением крайне необходимых моментов подобных трюков лучше не делать.

Что касается использования регистров компилятором, то лучше для себя принять, что ему (компилятору) виднее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого?

 

Обращение к регистровой памяти, такое же как к внутреннему ОЗУ. Собственно это ОЗУ и есть, просто система команд позволяет непосредственно адресоваться и производить операции только с первыми 32 ячейками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то AVR это RISC процессор,

а идеология RISC как раз и состоит в минимизации фокусов с регистрами

и максимизации простых операций load/store.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то AVR это RISC процессор,

а идеология RISC как раз и состоит в минимизации фокусов с регистрами

и максимизации простых операций load/store.

 

Ух ты, вот это формулировка ;)

 

А пояснить поподробней ;) А то я всегда считал, что для RISC важны именно операции регистр-регистр, т.к. load/store - это медленно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...