Ада-95. Компилятор GNAT



         Актуальная информация такси киев на нашем сайте .

Ограничения


Строка ограничений, состоящая из символов, указывает компилятору на то, как он должен управлять переменной, которую мы ему предоставляем.

Это значит, что мы указываем компилятору то, как мы интерпретируем смысл этой переменной.

Например:

Unsigned_32'Asm_Output ("=m", Eax);

Здесь, использование ограничения m (memory) указывает компилятору, что переменная Eax должна быть переменной которая размещается в памяти.

В результате указания этого ограничения, компилятор никогда не будет использовать регистр процессора для хранения этой переменной.

Рассмотрим еще один пример указания ограничения:

Unsigned_32'Asm_Output ("=r", Eax);

Здесь, использование ограничения r (register) указывает компилятору на использование регистровой переменной.

Следовательно, для хранения этой переменной компилятор будет использовать регистр процессора.

Если ограничению предшествует символ равенства ("="), то это указывает компилятору, что переменная будет использоваться для сохранения данных.

В показанном ранее примере, при указании ограничения, использовалось ограничение g (global), что позволяет оптимизатору использовать то, что он сочтет более эффективным.

Следует заметить, что существующее число различных ограничений достаточно обширно.

При этом, для процессоров архитектуры Intel x86 наиболее часто используемыми ограничениями являются:

= ограничение вывода
g  -  глобальная переменная (т.е. может быть чем угодно)
m  -  переменная в памяти
I  -  константа
a  -  использовать регистр eax
b  -  использовать регистр ebx
c  -  использовать регистр ecx
d  -  использовать регистр edx
S  -  использовать регистр esi
D  -  использовать регистр edi
r  -  использовать один из регистров eax, ebx, ecx или edx
q  -  использовать один из регистров eax, ebx, ecx, edx, esi или edi
<


Содержание  Назад  Вперед