реклама на сайте
подробности

 
 
> Локальные переменные и регистры
_Артём_
сообщение Mar 26 2007, 18:54
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Как заставить IAR расположить переменную вида
Код
union TADCResult {
    int adc_result_us;
    unsigned char adc_result_uc[2];
};

в регистры.

Пробовал в функции объявить ёё так:

register union TADCResult adc_fast;

не получилось - adc_fast всё равно в SRAM-е.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Mar 26 2007, 20:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А зачем вам это нужно? Компиляторы Си чаще всего "кладут" на квалификатор register . Если вам нужно "блох ловить" в виде отдельных тактов (быстродействие процедуры обеспечить) , то пишите всю функцию на ассемблере и прилинковывайте ее к СИшному исходнику.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Mar 26 2007, 20:59
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(rezident @ Mar 26 2007, 21:08) *
А зачем вам это нужно? Компиляторы Си чаще всего "кладут" на квалификатор register . Если вам нужно "блох ловить" в виде отдельных тактов (быстродействие процедуры обеспечить) , то пишите всю функцию на ассемблере и прилинковывайте ее к СИшному исходнику.

Ну для этого не обязательно асемблером пользоваться
можно например так (в IAR)
__regvar __no_init TADCResult adc_fast @ 14;

разместит Ваш union в регистрах R15:R14

P.S. только проверьте, я для union никогда не пользовался этим
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01375 секунд с 7
ELECTRONIX ©2004-2016