在gcc的内联汇编中,%esp和%ebp对应的字母是什么? 我了解到: a = eax b =ebx c = ecx d = edx S = esi D = edi I = constant value (0 to 31).
手册中有一个 GCC 机器限制 列表(请参见:Intel 386 部分)。更详细的信息(通常比手册更为更新)可以在 i386/constraints.md 文件中找到。 然而,由于堆栈一致性等充分理由,%ebp 和 %esp 不能用作约束。它们无法在扩展 asm 语法中指定为输入或输出。这在某些情况下还可能延伸至 %ebx —— 特别是,在生成位置独立代码时,例如使用 (i386 SysV) ELF ABI。当然,你仍然可以在 asm 块中显式操纵这些寄存器。