【发布时间】:2014-03-20 17:32:54
【问题描述】:
我的要求是通过使用内联汇编偏移 rbp 来访问函数调用参数。但是我找不到合适的操作数约束来指定 x86 中的基指针。我正在使用英特尔编译器,但它的文档指出它支持 GCC 样式的内联汇编。所以基于 GCC 的例子就足够了。
【问题讨论】:
-
在我知道的所有 x86 调用约定中,无论是 32 位还是 64 位,没有强制使用
EBP/RBP作为帧指针。因此,访问相对于帧指针(寄存器)的参数的能力...取决于您的代码是如何编译的。在 UN*X 上的 64 位 x86 中,您通常根本无法通过%rbp访问参数,因为它们没有在堆栈上传递/它们不存在于内存中(但仅存在于 arg 寄存器中)。
标签: assembly inline-assembly icc