约束规则
约束 | 输入/输出 | 描述 |
---|---|---|
a | I/O | 使用%eax/%ax/%al。 |
b | I/O | 使用%ebx/%bx/%bl。 |
c | I/O | 使用%ecx/%cx/%cl。 |
d | I/O | 使用%edx/%dx/%dl。 |
D | I/O | 使用%edi/%di。 |
S | I/O | 使用%esi/%si。 |
A | I/O | 把%eax与%edx组合成一个64位的整数值。 |
r | I/O | 使用一个通用寄存器,由GCC在%eax/ %ax/ %al、%ebx/ %bx/ %bl、%ecx/ %cx /%cl、%edx/%dx/%dl中选取一个GCC认为是合适的。 |
q | I/O | 使用一个通用寄存器,与r的意义相同。与r相比,q更好一些。 |
g | I/O | 使用寄存器或内存地址。 |
m | I/O | 使用内存地址。 |
o | I/O | 表示使用一个内存位置的偏移量。 |
V | I/O | 表示仅仅使用一个直接内存位置。 |
i | I/O | 表示使用一个整数类型的立即数。 |
n | I/O | 表示使用一个带有已知整数值的立即数。 |
F | I/O | 表示使用一个浮点类型的立即数。 |
f | I/O | 表示使用浮点寄存器。 |
t | I/O | 表示使用第一个浮点寄存器。 |
u | I/O | 表示使用第二个浮点寄存器。 |
=: | O | 表示此Output操作表达式是只写的。 |
+: | O | 表示此Output操作表达式是可读可写的。 |
&: | O | 表示此Output操作表达式独占为其指定的寄存器。 |
%: | I | 表示此Input操作表达式中的C/C++表达式可以与下一个Input操作表达式中的C/C++表达式互换。 |