想知道如何在 32 位 I86 架构上内联 fbstp 的使用。我尝试了类似的东西
int main( )
{
double foo = 100.0;
long bar = 0;
asm( "pushl %1; fbstp %0"
: "=m"(bar)
: "r"(foo)
);
...
但酒吧不变。我已经尝试阅读我能找到的所有内容,但大多数示例只是简单地将两个整数加在一起。我找不到任何关于将操作数推入堆栈以及当 fbstp 之类的指令将 80 位数据写回内存(即使用什么 C 类型)以及如何在 asm 语法中指定它时我应该做什么的内容.
同样在 x86-64 上似乎有 pushq 而没有 pushl 但 fbstp 仍然存在而 fbstq 不存在。64位还有其他魔力吗?