%esp和%ebp的gcc-inline汇编中的字母是什么? 我理解:
a = eax
b =ebx
c = ecx
d = edx
S = esi
D = edi
I = constant value (0 to 31).
答案 0 :(得分:6)
gcc machine constraints的手册中有一个列表(请参阅: Intel 386 部分)。可以在i386/constraints.md文件中找到血腥详细信息(通常比手册更新)。
然而 - 出于好的理由,即堆栈一致性,%ebp
和%esp
不能用作约束。它们不能在扩展的asm语法中指定为输入或输出。在某些情况下,这也可以扩展到%ebx
- 特别是在生成与位置无关的代码时,例如,使用(i386 SysV)ELF ABI。
当然,您仍然可以明确地在asm块中操作这些寄存器。