在visual 2012下如何在c ++项目中调用sqrtsd asm函数
我无法通过谷歌找到它
类似的东西:
double mySqrt(double val)
{
__asm
{
...
sqrstd...
}
}
编辑:
在32位模式下
答案 0 :(得分:3)
为什么不使用可移植的sqrt函数http://www.cplusplus.com/reference/cmath/sqrt/?
默认情况下,VS 2012会将__libm_sse2_sqrt_precise
替换为sqrt()。但如果您使用/fp:fast
进行编译,则会替换为sqrtsd
答案 1 :(得分:2)
您可能会或可能无法使用内联汇编程序,正如其他答案所示。
然而,SSE(以及MMX和其他人)有所谓的内在函数:
sqrtsd
的{{3}}
你显然必须阅读其他一些页面,以便能够把整个事情放在一起。 Intrinsics是Microsoft推荐的解决方案。
答案 2 :(得分:2)
我认为这样做有点学术性,因为它不太可能带来任何实际好处,很可能是一种惩罚。但是:
double mySqrt(double val)
{
double retu;
__asm
{
sqrtsd xmm1, val
movsd retu, xmm1
}
return retu;
}
答案 3 :(得分:0)
你想要什么,你正在寻找的功能,它被称为“内联汇编”,意味着基本上在C / C ++程序内部组装,Visual Studio不提供对此的良好支持,对于x64位平台它没有根本不提供此功能。
http://www.viva64.com/en/k/0015/
您可能希望切换到更好的编译器。