Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-ноя-24 10:40

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: static vs register
СообщениеДобавлено: 2014-янв-18 22:57 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Описываю локальные переменные в С-процедуре:
register short int r;
static int i, j, k;
unsigned int n, t = 0;

CodeMaster-ARM в листинге показывает, что переменные j и k оказались в регистрах, а остальные в памяти. Почему?
Я считал, что при описании регистровых переменных следует использовать класс памяти register а для статических static а не наоборот...

_________________
Странник


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: static vs register
СообщениеДобавлено: 2014-янв-20 07:30 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1012
Откуда: Тула
емнип, по стандарту register носит рекомендательный характер для компилятора. переменные n и t оказались в регистрах? если да, то так и объявляйте - компилятор то оптимизирующий, должен оптимально размещать.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: static vs register
СообщениеДобавлено: 2014-янв-20 21:04 
Не в сети
Аватара пользователя

Зарегистрирован: 2013-июн-21 15:27
Сообщения: 66
Откуда: Новосибирск
Хм... Видимо, у меня и у компилятора сильно разное представление об оптимальности...
Но всё равно непонятно, почему в регистры попадают только переменные, объявленные как static, а те, что объявлены как register, в регистры никогда не попадают? Я пробовал объявлять попавшие в регистры переменные как register, а не static, при этом они всегда переставали быть регистровыми. Похоже на то, что компилятору в этом случае хочется не столько пооптимизировать, сколько поиздеваться: "Хочешь вот именно эту переменную регистровой сделать? А вот фиг тебе!" ;-)

_________________
Странник


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: static vs register
СообщениеДобавлено: 2014-янв-21 17:21 
Не в сети

Зарегистрирован: 2012-дек-11 21:35
Сообщения: 170
Откуда: Казань
stranderer писал(а):
Хм... Видимо, у меня и у компилятора сильно разное представление об оптимальности...
Но всё равно непонятно, почему в регистры попадают только переменные, объявленные как static, а те, что объявлены как register, в регистры никогда не попадают? Я пробовал объявлять попавшие в регистры переменные как register, а не static, при этом они всегда переставали быть регистровыми. Похоже на то, что компилятору в этом случае хочется не столько пооптимизировать, сколько поиздеваться: "Хочешь вот именно эту переменную регистровой сделать? А вот фиг тебе!" ;-)

Так делаем так и пользуемся =):
#define _register static
#define _static register


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


Кто сейчас на конференции

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


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB