%ebp和%esp的gcc内联汇编中的字母是什么?

时间:2013-02-13 13:52:11

标签: gcc assembly x86

%esp和%ebp的gcc-inline汇编中的字母是什么? 我理解:

a = eax 
b =ebx 
c = ecx 
d = edx 
S = esi 
D = edi 
I = constant value (0 to 31). 

1 个答案:

答案 0 :(得分:6)

gcc machine constraints的手册中有一个列表(请参阅: Intel 386 部分)。可以在i386/constraints.md文件中找到血腥详细信息(通常比手册更新)。

然而 - 出于好的理由,即堆栈一致性,%ebp%esp不能用作约束。它们不能在扩展的asm语法中指定为输入或输出。在某些情况下,这也可以扩展到%ebx - 特别是在生成与位置无关的代码时,例如,使用(i386 SysV)ELF ABI。

当然,您仍然可以明确地在asm块中操作这些寄存器。