[编译环境][gcc]下的内联汇编

约束规则


约束 输入/输出 描述
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++表达式互换。

你可能感兴趣的:(编译环境)