在c++下调用asm SQRTSD
visual studio - call asm sqrtsd under a c++
在visual 2012下如何在c++项目中调用sqrtsd asm函数
我无法通过谷歌找到它
类似于:
double mySqrt(double val)
{
__asm
{
...
sqrstd...
}
}
编辑:为什么不使用可移植的sqrt函数http://www.cplusplus.com/reference/cmath/sqrt/?
VS 2012默认将用__libm_sse2_sqrt_precise
替换sqrt()。但是如果你用/fp:fast
编译,它会被sqrtsd
代替
我认为这样做是一种学术练习,因为它不太可能有任何实际的好处,而且很可能是一种惩罚。然而:
double mySqrt(double val)
{
double retu;
__asm
{
sqrtsd xmm1, val
movsd retu, xmm1
}
return retu;
}
您可能会也可能不会使用内联汇编器,正如其他答案所指出的那样。
然而,SSE(以及MMX和其他)有所谓的内在特性: MS VS 的内禀函数
sqrtsd
的值为_mm_sqrt_sd
很明显,你还得读其他几页才能把整个事情联系起来。微软推荐使用intrinsic来解决这个问题。
你想要的,你正在寻找的功能,它被称为"内联汇编",意思是C/c++程序中的汇编基本上,Visual Studio不提供很好的支持,对于x64位平台,它根本不提供这个功能。
http://www.viva64.com/en/k/0015/你可能想换一个更好的编译器
相关文章:
- 使用C++获取程序的 ASM
- 在 c++ 中使用 x86 DIV 的这个 asm 块有什么用?
- g++ -O3 为 loop 创建了奇怪的指令 - 两个具有相同 asm 的版本
- Extern "C"错误在'int'之前'asm'或'__attribute__'
- 了解 C/C++ 中 Windows / MSVC 的一些反调试内联 asm
- 尝试使用 x86 asm SSSE3 将大端转换为小端序
- 如何使用"asm volatile"编写 btr 指令
- objdump 不显示机器代码,但显示 ASM
- 未使用的 asm() 在不受支持的体系结构上的行为
- 内联asm编译器屏障(内存阻塞器)是算作外部函数,还是算作静态函数调用
- std::mutex::lock() 产生奇怪(和不必要的)ASM 代码
- 为什么发出空asm命令会交换变量
- C++-更改另一个文件的ASM指令
- 尝试用纯 c 编程 arduino,得到以下错误:预期的"="、""、";",'asm'或"打印"之前的'__attribute__'|
- C++/ASM:按值传递使用 xmm0,但按引用使用 rdi
- 有人知道可以使用 c++ 以字节为单位编码 asm 字符串的任何东西吗?
- 优化了 VC++ 和 ASM 中的代码
- 如何在 Linux asm 中正确返回双精度值
- 使用读取[EBP 4]的MSVC内联ASM移植到64位
- 在c++下调用asm SQRTSD