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

sti*_*ian 4 x86 assembly gcc

%esp和%ebp的gcc-inline汇编中的字母是什么?我明白那个:

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

Bre*_*ale 6

手册中列出了gcc机器约束的列表(参见:英特尔386部分).在i386/constraints.md文件中可以找到血腥的详细信息(通常比手册更新).

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

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