Spec-Zone.ru › GCC 4

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

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

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

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

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

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

Spec-Zone.ru

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