Spec-Zone.ru › GCC 5

6.43.5 Переменные в указанных регистрах

GNU C позволяет поместить несколько глобальных переменных в указанные аппаратные регистры. Также можно указать регистр, в котором должна быть размещена обычная переменная-регистр.

  • Глобальные переменные-регистры резервируют регистры на протяжении всего выполнения программы. Это может быть полезно в программах, таких как интерпретаторы языков программирования, имеющих несколько глобальных переменных, к которым часто обращаются.
  • Локальные переменные-регистры в определённых регистрах не резервируют регистры, за исключением момента, когда они используются в качестве входных или выходных операндов в инструкции asm и сама инструкция asm не удаляется. Анализ потока данных компилятора способен определить, где указанные регистры содержат текущие значения и где они доступны для других применений. Записи в локальные переменные-регистры могут быть удалены, если они, согласно анализу потока данных, являются «мёртвыми». Ссылки на локальные переменные-регистры могут быть удалены, перемещены или упрощены.

    Иногда такие локальные переменные удобны для работы со расширенным функционалом asm (см. Расширенный язык ассемблера), если требуется записать один выход ассемблерной инструкции непосредственно в определённый регистр. (Это работает, если регистр, который вы указываете, соответствует ограничениям, заданным для этого операнда в %%%CODE_BLOCK_3%%).

• Глобальные переменные-регистры:
• Локальные переменные-регистры:

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/Explicit-Reg-Vars.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API