%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)
手册中列出了gcc机器约束的列表(参见:英特尔386部分).在i386/constraints.md文件中可以找到血腥的详细信息(通常比手册更新).
但是 - 有充分的理由,即堆栈一致性,%ebp
并%esp
不能用作约束.它们不能在扩展的asm语法中指定为输入或输出.%ebx
在某些情况下,这也可以扩展到- 特别是在生成与位置无关的代码时,例如,使用(i386 SysV)ELF ABI.
当然,您仍然可以明确地在asm块中操作这些寄存器.