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