fpu相关内容
我写了一个像这样的向量结构: pre $ struct $ { float x1,x2,x3,x4 ; }; 然后,我创建了一个使用向量执行内联汇编操作的函数: struct vector * adding(const struct vector v1 [],const struct vector v2 [],int size){ struct vector vec [尺
..
虽然我知道(所以我被告知)浮点协处理器的运行速度比任何浮点运算的软件实现都要快,但我完全没有感觉到这种差异有多大,依次是大小。 答案可能取决于微处理器和超级计算机之间的应用程序和工作地点。我对计算机模拟特别感兴趣。 您能指出这个问题的文章或论文吗? 解决方案 然而,根据我的理解,在处理器中,不要在硬件中实现浮点(FP)操作,软件实现通常会比整型操作慢10到100倍(甚至更糟,如
..
在MSVC win32 / win64中,扩展精度浮点(80位值,在某些编译器中也称为“long double”)转换为double(64位)的最便携和“正确”方式是什么? MSVC目前(截至2010年)假设“long double”是“double”的同义词。 我可能可以在内联asm编写fld / fstp汇编程序对,但内联asm不适用于MSVC中的win64代码。我是否需要将此汇编程序代
..
当CPU没有(或错误)浮点单元时,软件如何进行浮点运算?例如PIC,AVR和8051微控制器架构。 解决方案 “Emulated”是在PIC,AVR和8051的上下文中出现错误的术语。浮点仿真是指在具有FPU选项但并非所有部件都包含FPU的架构上对FPU硬件的仿真。这允许包含浮点指令的二进制文件在没有FPU的情况下运行。在使用的地方,FPU仿真实现为无效指令异常处理程序;当遇到FPU指令但
..
我可以通过以下方式重置FPU的CTRL寄存器: http://support.microsoft.com/kb/326219 但是如何保存当前的寄存器,然后再恢复? p> 来自.net代码.. 我在做什么,是从Delphi调用.net dll一个COM模块。检查delphi中的 Ctrl 寄存器产生一个值,检查.net代码中的controlfp是否提供另一个值。 我需要的
..
介绍 - 长而无聊的部分 (问题是结束) 我我的开发环境是Windows和Visual C ++ 2008.正常的FPU控制字指定了一个第三方的COM组件,不断改变FPU控制字。 在各种条件下都不应该抛出异常。我已经验证了,同时查看 float.h 中找到的 _CW_DEFAULT 宏,以及查看控件在启动时调试器中的字。 每当我打电话到COM对象时,控制字在返回时被修改。这
..
简介 - 长而乏味的部分 (问题在结尾) 我的开发环境是Windows和Visual C ++ 2008.正常的FPU控制字指定了一个第三方COM组件,它不断改变FPU控制字。在各种条件下不应抛出异常。我已经通过查看 _CW_DEFAULT 宏(位于 float.h 中)以及查看控件 每次调用COM对象时,控制字都会在返回时被修改。这很容易防御。我只是重置控制字,一切都很好。问题
..
是否可以在查找表(如1 / f-> 1 * inv [f])的形式 中进行浮点除法的倒数?如何做到这一点? 我认为一些和掩码和移位应该应用浮动以使 它的一种形式的索引? 解决方案 你可以猜到这样的一个近似倒数: int x = reinterpret_cast(f); x = 0x7EEEEEEE - x; float inv = reinterpre
..
是否可以在查找表(如1 / f-> 1 * inv [f])的形式 中进行浮点除法的倒数?如何做到这一点? 我认为一些和掩码和移位应该应用浮动以使 它的一种形式的索引? 解决方案 你可以猜到这样的一个近似倒数: int x = reinterpret_cast(f); x = 0x7EEEEEEE - x; float inv = reinterpre
..
是否可以在查找表(如1 / f-> 1 * inv [f])的形式 中进行浮点除法的倒数?如何做到这一点? 我认为一些和掩码和移位应该应用浮动以使 它的一种形式的索引? 解决方案 你可以猜到这样的一个近似倒数: int x = reinterpret_cast(f); x = 0x7EEEEEEE - x; float inv = reinterpre
..
我有一个x86 NASM 程序,它似乎工作完美。我有问题使用从它返回的值。这是使用MSVC ++的32位Windows。我希望在 ST0 中返回值。 一个最小的例子演示了返回值的问题可以在这个C ++和 NASM 装配代码: #include extern“C”float arsinh(float); int main() { float tes
..
是否可以执行浮点运算中不具有浮点单元的嵌入式处理器 解决方案 是的,你就必须做到这一点的软件。您编译器可能提供支持,或者您可能需要推出自己的。有可免费获得实现的了。
..
时有可能使浮动分工形式倒数 的查找表(例如像的1 / f - > 1 * INV并[f])?如何可以做? 我认为,一些与面具和转移应appled浮动,使 它索引的形式?如何将它exectly? 解决方案 您可以猜到一个近似逆是这样的: INT X = reinter pret_cast< INT>(F); X = 0x7EEEEEEE - X; 浮INV = re
..
这可能是一个x86 FPU专家一个问题: 我试图写它产生的范围是[MIN,MAX]随机浮点值的函数。问题是,我的发电机算法(浮点梅森倍捻机,如果你好奇)只在区间[1,2)返回值 - 即,我想一个包容性的上限,但我的“源”产生的价值从独家上限。这里的渔获,底层发电机返回一个8字节双,但我只想要一个4字节的花车,和我使用的最近的默认FPU舍入模式。 我想知道的是截断本身在这种情况下,是否会导致我的
..
我开发一个code将被用于运动控制和我有战俘功能的问题。 我使用VS2010为IDE。 下面是我的问题: 我有: 双P = 100.0000; 双D = 1000.0000; T1 = POW((P /(8.0000 * D)1.00 / 4.000); 在评价这最后的功能,我没有得到更好的近似作为结果。我得到一个7位十进制数字正确,以及随之而来的数字都是垃圾。 我猜测
..
我有这个code以下的问题。它是在IA-32架构气体汇编语法。它产生算术异常, FSQRT 指令之后。 SetDouble 是 INT 类型的值 0x0200 和输入是一个浮点数。我使用的GCC与 -m32 标志编译这一点。在哪里可以我犯的错误有人点。 pushl%EBP MOVL%ESP,EBP% FINIT FLDCW SetDouble FLD输入 FLD输入 fmulp FLD1 FA
..
我不明白这个事情:有什么用这样的命令(FFREE,FDECSTP)的? 它可以已经使用弹出值了FPU堆栈,或者这是一些另有目的? 我不明白:/可能有人解释说,TNX 解决方案 是,使用 FFREE , FINCSTP 和 FDECSTP 您可以手动管理FPU堆栈。需要注意的是FPU堆栈增长下类似CPU的堆栈,所以要去除(POP),你标记注册为免费的东西,递增堆栈指针。 您不会看到典型
..
我有在64位指令FLD一个小问题... 要加载双精度值ST0寄存器堆栈指针FPU,但它似乎是不可能的。 在Delphi的32倍,我可以用这code: 函数DoSomething的(X:双人间):双; ASM FLD点¯x // 做一点事 .. FST结果结束; 不幸的是,在64位,同样code不起作用。 解决方案 在64位模式下浮点参数在XMM寄存器传递。因此,当德尔福试
..
我读( http://www.stereopsis.com/FPU.html )中(
..
我听说了iPhone 4和iPad有一个FPU称为VFP,在某种程度上优化了浮点运算,甚至允许SIMD(GCC虽然花费是否优势是值得怀疑)。不过,我读过一些Android设备,使用固定点以上浮点的加速会导致性能的20倍增长。 将使用什么定点算法在浮点在这些设备上实施我的code的浮点运算密集的部分优势。 解决方案 iPhone 3G的ARMv6的CPU有一个流水线VFP浮点单元,具有更高
..