【发布时间】:2020-10-07 07:12:23
【问题描述】:
用于确定将在 C++ 代码中的汇编程序块中返回的浮点值在哪个寄存器(st(0) 或 xmm0)中的指令。
__declspec(naked) float __fastcall ln(float flt)
{
float buf;
_asm {
mov buf, eax
fld buf // Return st(0)
};
};
【问题讨论】:
-
那么问题是什么?你想要什么?这只是没有上下文或真正含义的词。请阅读How to Ask和edit您的问题
-
除非您的代码针对最通用的不支持 SSE 的 i386 处理器,否则编译器会更喜欢 *MM 寄存器而不是 i387 堆栈。
-
对不起。英语不是我的母语。有一个 C++ 程序代码,在 C++ 代码里面有一个汇编块,它计算一个数的自然对数,在编译 Visual Studio 程序代码时,在某些情况下,程序期望汇编代码的结果在寄存器 st (0) 中在寄存器 xmm0 中的其他寄存器中。如何告诉visual studio汇编器插入返回xmm0寄存器中的结果?
-
用您的代码编辑问题(可能还有生成的胶水程序集)
-
编辑你的问题,不要放外部链接。如果你必须缩短代码。
标签: c++ visual-studio x86 calling-convention x87