skopus 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 · Жалоба Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 · Жалоба Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого? 32*8 - обозначает тридцать два восьмиразрядных регистра. соответственно IAR использует все регистры и так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 · Жалоба Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого? Как правильно заметил defunct в МК AVR ВСЕГО 32 регистра общего назначения :-). В IAR под нужды программиста можно задействовать часть регистров (R4..R15: для Си). Для этого надо зайти в опции проекта (Project->Options->Compiler->Code). Кроме того к регистрам можно обращаться и как к ячейкам памяти с адреса 0х00 по 0х1F. Соответственно, и структуры там можно размещать, но вот вопрос - нужно ли это. По моему кроме хромающего кода, полного глюков, Вы ни чего не получите. Лучше добиваться повышения скорости другими методами. Например применением более эффективного алгоритма :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 · Жалоба prottoss , чтобы код не хромал и не было глюков надо читать описание на компилятор, где говорится, что залочивание более девяти регистров может привести к конфликтам с некоторыми библиотечными функиями (т. к. библиотеки компилировались и собирались без залочивания регистров). Сам использую залочивание во многих проектах, даже весьма сложных. Пишу на С++ с применением ОСРВ. Никогда не наблюдал глюков от залочивания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 · Жалоба prottoss , чтобы код не хромал и не было глюков надо читать описание на компилятор, где говорится, что залочивание более девяти регистров может привести к конфликтам с некоторыми библиотечными функиями (т. к. библиотеки компилировались и собирались без залочивания регистров). Сам использую залочивание во многих проектах, даже весьма сложных. Пишу на С++ с применением ОСРВ. Никогда не наблюдал глюков от залочивания. Когда я говорил про хромой код, я имел ввиду расположение в регистровой памяти структур, тема то про это. А залочивание регистров я и сам использую, тоже безглючно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 16 февраля, 2006 Опубликовано 16 февраля, 2006 · Жалоба Когда я говорил про хромой код, я имел ввиду расположение в регистровой памяти структур, тема то про это. А залочивание регистров я и сам использую, тоже безглючно. Т. е. если Вы говорили о стиле программирования, то полностью с Вами согласен. За исключением крайне необходимых моментов подобных трюков лучше не делать. Что касается использования регистров компилятором, то лучше для себя принять, что ему (компилятору) виднее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 17 февраля, 2006 Опубликовано 17 февраля, 2006 · Жалоба Можно ли как-нибудь в IAR C задействовать ВСЕ регистры? Он использует, насколько я понимаю, только первые 32. Я вот хотел бы поместить структуру не в оперативную память, а в регистровую. Это вообще возможно? И будет ли прирост скорости от этого? Обращение к регистровой памяти, такое же как к внутреннему ОЗУ. Собственно это ОЗУ и есть, просто система команд позволяет непосредственно адресоваться и производить операции только с первыми 32 ячейками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
beer_warrior 0 17 февраля, 2006 Опубликовано 17 февраля, 2006 · Жалоба Вообще-то AVR это RISC процессор, а идеология RISC как раз и состоит в минимизации фокусов с регистрами и максимизации простых операций load/store. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 17 февраля, 2006 Опубликовано 17 февраля, 2006 · Жалоба Вообще-то AVR это RISC процессор, а идеология RISC как раз и состоит в минимизации фокусов с регистрами и максимизации простых операций load/store. Ух ты, вот это формулировка ;) А пояснить поподробней ;) А то я всегда считал, что для RISC важны именно операции регистр-регистр, т.к. load/store - это медленно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться