Форум программистов, компьютерный форум CyberForum.ru

Регистровые переменные - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
thick_int
Заблокирован
20.11.2011, 19:06     Регистровые переменные #1
Если некоторая переменная целого типа объявляется со спецификатором register, то это (насколько я понял, кстати правильно это или нет?) всего лишь просьба компилятору поместить эту переменную в регистр процессора (а кстати сколько таких регистров у процессора Core i7?).
А есть ли какой-либо способ узнать, действительно ли эта переменная помещается в регистр или же нет?

Тот же самы вопрос относительно inline функций. Ведь это же тоже всего лишь пожелание сделать функцию inline. То есть можно ли узнать действительно ли компилятор заинлайнил эту функцию или нет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2011, 19:06     Регистровые переменные
Посмотрите здесь:

C++ Переменные
C++ Переменные
C++ Неинициализированные переменные
Переменные в функциях C++
C++ статические переменные
Переменные в c++ C++
Автоматические переменные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.11.2011, 19:08     Регистровые переменные #2
Цитата Сообщение от thick_int Посмотреть сообщение
А есть ли какой-либо способ узнать, действительно ли эта переменная помещается в регистр или же нет?
дизассемблировать и посмотреть если откапаешь такую переменную
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
20.11.2011, 19:11     Регистровые переменные #3
Цитата Сообщение от thick_int Посмотреть сообщение
Если некоторая переменная целого типа объявляется со спецификатором register, то это (насколько я понял, кстати правильно это или нет?) всего лишь просьба компилятору поместить эту переменную в регистр
Да.
Цитата Сообщение от thick_int Посмотреть сообщение
(а кстати сколько таких регистров у процессора Core i7?).
Открываем книгу по ассемблеру и смотрим.

Цитата Сообщение от thick_int Посмотреть сообщение
А есть ли какой-либо способ узнать, действительно ли эта переменная помещается в регистр или же нет?
Тот же самы вопрос относительно inline функций. Ведь это же тоже всего лишь пожелание сделать функцию inline. То есть можно ли узнать действительно ли компилятор заинлайнил эту функцию или нет?
в отладчике можно глянуть.
thick_int
Заблокирован
20.11.2011, 19:17  [ТС]     Регистровые переменные #4
Цитата Сообщение от Jupiter Посмотреть сообщение
дизассемблировать и посмотреть если откапаешь такую переменную
Это пока для меня еще слишком сложно. Точнее, я просто не знаю, как это делать.
Хотелось бы что-нибудь попроще.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
20.11.2011, 19:20     Регистровые переменные #5
Тогда вопрос - зачем вам это нужно, если вы не понимаете как это работает?
thick_int
Заблокирован
20.11.2011, 19:26  [ТС]     Регистровые переменные #6
Ну почему же не понимаю. Понимаю, что регистровая переменная орабатывается быстрее нежели, чем переменнаяя, размещаемая в оперативной памяти.
Вот поэтому и хотелось узнать больше сведений, нежели чем просто, как это пишется в большинстве учебников, о том, как происходит этот процесс (выделения регистров под целочисленные переемменные).
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
20.11.2011, 19:33     Регистровые переменные #7
Цитата Сообщение от thick_int Посмотреть сообщение
как происходит этот процесс (выделения регистров под целочисленные переемменные).
Ни че там не выделяется.. эти регистры есть всегда..
http://ru.wikipedia.org/wiki/Регистр_процессора
thick_int
Заблокирован
20.11.2011, 19:48  [ТС]     Регистровые переменные #8
К словам то че цепляться?
Ну понятно, что там всегда есть регистры. Интересует то, в каких случаях компилятор запихивает ту или иную целочисленную переменную в регистр, а в каких нет.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
20.11.2011, 19:51     Регистровые переменные #9
Запихивает тогда, когда считает это нужным. Т.е. когда "запихивание" благоприятно сказывается на производительности. Думать об этом не надо. Использовать спецификатор register тоже не надо. Последние версии студии его просто игнорируют и правильно делают.
thick_int
Заблокирован
20.11.2011, 19:59  [ТС]     Регистровые переменные #10
Ну понятно, то есть больше чем в учебниках для учащихся среднего школьного возраста по этому вопросу информации нигде нет.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
20.11.2011, 20:02     Регистровые переменные #11
На самом слово register можно считать в некоторой степени устаревшим, т.к. сейчас уже не встретишь кода с его использованием. Компиляторы делают так, как считают нужным и программисты полностью полагаются на их выбор.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.11.2011, 20:03     Регистровые переменные #12
thick_int, вам ответили в предыдущем посте
спецификатор register - достояние времен зарождения языка c
времен когда машины были слабыми, а компиляторы глупыми
сейчас использовать register нет смысла
thick_int
Заблокирован
20.11.2011, 20:04  [ТС]     Регистровые переменные #13
И то же самое я так полагаю относится и ко второму вопросу, то есть остается только молиться на компилятор?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.11.2011, 20:06     Регистровые переменные #14
Цитата Сообщение от thick_int Посмотреть сообщение
то есть остается только молиться на компилятор?
остается выставить ему правильные опции
вы кстати наивно думаете, что если скажете, что и где компилятору надо распологать, то код получится эффективней
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
20.11.2011, 20:07     Регистровые переменные #15
Цитата Сообщение от thick_int Посмотреть сообщение
то есть больше чем в учебниках для учащихся среднего школьного возраста по этому вопросу информации нигде нет
Информация есть. Но она не нужно знать. Управлять ты этим процессом не можешь (только изменяя параметры оптимизации). Встроенный ассемблер доступен только для х86 программ, но ассемблера ты не знаешь. Т.е. просто забудь про слово register и не отвлекайся на ненужности.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 20:11     Регистровые переменные
Еще ссылки по теме:

C++ Переменные из коасса
Указатели на переменные C++
C++ Переменные
Сравнение строк (символьные массивы), игнорируя регистровые различия C++
Переменные C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
thick_int
Заблокирован
20.11.2011, 20:11  [ТС]     Регистровые переменные #16
Хорошо, так и сделаю. Просто я дошел в учебниках (кстати весьма современных) до тех мест, где эти фичи описываются, как мне показалось не совсем полно. ПОка отставлю их и двинусь дальше.
Все равно всем спасибо.
Yandex
Объявления
20.11.2011, 20:11     Регистровые переменные
Ответ Создать тему
Опции темы

Текущее время: 23:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru