Могу я выделение регистра управления в g ++?

Да, вполне возможно создавать нативные приложения Vulkan с помощью Visual Studio 2017.

Чтобы использовать Vulkan, вам нужно всего лишь включить заголовочный файл vulkan.h. Этот заголовок будет автоматически включать все остальные заголовки, необходимые для использования Vulkan, в зависимости от вашей целевой платформы.

Обратите внимание, что более старые версии платформы Android (23 и ниже) не включают в себя библиотеку vulkan.so, поэтому, если вы нацеливаетесь на них, вам нужно динамически загружать указатели на функции Vulkan, даже для функций без расширений. [113 ]

5
задан Łukasz Lew 11 February 2009 в 01:07
поделиться

3 ответа

Если Вы действительно хотите смешать с регистром alloation затем, можно вынудить GCC выделить локальные и глобальные переменные в определенных регистрах.

Вы делаете это с объявлением специальной переменной как это:

 register int test_integer asm ("EBX");

Работы для другой архитектуры также, просто замените EBX целевым определенным именем регистра.

Для большего количества информации об этом я предлагаю, чтобы Вы смотрели на gcc документацию:

http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Local-Reg-Vars.html

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

Если Ваша функция состоит в том, что производительность, очень важная, что Вы получаете 20% различий в производительности между компиляциями, которые это может быть хорошая идея записать той вещи во встроенном ассемблере.


Править: Поскольку strager указал, что компилятор не вынужден использовать регистр для переменной. Это только вынуждено использовать регистр, если переменная используется вообще. Например, если переменная, это не переживает оптимизационный проход, это не будет использоваться. Также регистр может использоваться для других переменных также.

6
ответ дан 14 December 2019 в 04:49
поделиться

В целом ключевое слово регистра просто проигнорировано всеми современными компиляторами. Единственным исключением является (относительно) недавнее добавление ошибки, при попытке взять адрес переменной, Вы отметили с ключевым словом регистра.

Я испытал этот вид боли также и в конечном счете нашел, что единственный реальный путь вокруг этого состоял в том, чтобы посмотреть на выходной блок, чтобы попытаться определить то, что заставляет gcc уходить углубленный. Существуют другие вещи, которые можно сделать, но это зависит от точно, что код пытается сделать. Я работал в очень очень большой функции с большой суммой вычисленного goto погрома, в котором незначительные (на вид безвредные) изменения могли вызвать катастрофические хиты производительности. Если Вы делаете подобный существует несколько вещей, которые можно сделать, чтобы попытаться смягчить проблему, но детали несколько неприглядны, таким образом, я воздержусь от обсуждения их здесь, если это не будет на самом деле релевантно.

3
ответ дан 14 December 2019 в 04:49
поделиться

Это зависит от процессора, который Вы используете. Или если я говорю, да Вы можете с ключевым словом регистра, но это осуждено, если Вы не используете простой процессор без конвейерной обработки и одноядерного. В эти дни GCC может сделать путь лучшее задание, чем Вы можете с выделением регистра. Доверяйте ему.

-1
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: