fpu相关内容
我知道禁止在内核中使用任何形式的浮点代码,我们永远不应该使用任何可能生成FP/SIMD指令的GCC标志,但一些使用kernel_fpu_begin()和kernel_fpu_end()的源代码(特别是arch/x86/crypto/*)怎么办? Example 1,example 2。 我有一个老式英特尔酷睿2双核CPU,用于我的64位Linux内核,并且在主要Makefile中我使用
..
介绍 - 冗长而无聊的部分 (问题在最后) 我对不断更改 FPU 控制字的第三方 COM 组件感到非常头疼. 我的开发环境是Windows和Visual C++ 2008.正常的FPU控制字指定在各种情况下都不应该抛出异常.我已经通过查看 float.h 中的 _CW_DEFAULT 宏以及在启动时查看调试器中的控制字来验证这一点. 每次我调用 COM 对象时,控制字都会在
..
我想在 Android 上获得我的移动应用程序的最大性能.我想知道是否有人知道检查手机是否具有 FPU 的技巧. 经过一些研究,似乎在拥有 FPU 的单元上使用 FloatMath 类会比较慢,所以我想两全其美. 大多数较新的手机都有 FPU,但我希望获得设备所能提供的最佳性能. 解决方案 底层是 Linux 内核,至少 Android 的默认配置会挂载 procfs.这意味着
..
出于学术原因,我将在 AArch64 上测试 sqrt 函数的性能.单浮点sqrtf函数的代码: fsqrt s0, s0退 双浮点sqrt函数的代码: fsqrt d0, d0退 我指的是此处 FSQRT 的理论延迟:http://infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimiza
..
出于学术原因,我将在 AArch64 上测试 sqrt 函数的性能.单浮点sqrtf函数的代码: fsqrt s0, s0退 双浮点sqrt函数的代码: fsqrt d0, d0退 我指的是此处 FSQRT 的理论延迟:http://infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimiza
..
我想创建我的嵌入式 C 代码的构建,专门检查浮点运算不是偶然引入的.我已经尝试将 +nofp 添加到我的 [cortex-m3] 处理器架构中,但 GCC for ARM 不喜欢那样(可能是因为 cortex-m3 没有一个浮点单元).我试过指定 -mfpu=none 但这不是允许的选项.我试过将 -lm 离开链接器命令行,但链接器似乎太聪明了,不能被它愚弄,并且正在编译带有 double 的代码
..
我读过(http://www.stereopsis.com/FPU.html)(什么是最快的方法在 x86 上将 float 转换为 int).有谁知道慢速简单转换(见下面的片段)是否也适用于 ARM 架构? inline int Convert(float x){int i = (int) x;返回我;} 要应用 FPU 文章中提到的一些技巧,您必须设置浮点运算的精度.我如何在 ARM 上执
..
由于我的主要操作系统是 linux 并且在 Visual Studio 上有项目,所以我决定使用在线编译器来实现它.我找到了许多人建议的 this.所以这是我的代码: #include 使用命名空间标准;int main(void) {浮动 a = 1;浮动 b = 20.2;浮点数 = 0;浮动 res1 = 0;_asm {飞行时间FCOM bJA迷笛JMP模式迷笛:FST资源输出修改:FS
..
如何使用lldb打印FPU寄存器? 在gdb中,您将执行类似 p $ st0 的操作,但是在lldb中执行相同操作会导致错误: error:使用未声明的标识符'$ st0' 寄存器读取的st0 也不起作用,并给出错误 error:无效的寄存器名称'st0'.. 解决方案 按照 paulsm4 的建议,使用 register读取--all ,我发现寄存器实际上是 stmm0 到
..
Hullo,我正在学习x86 FPU组装,并且我有 有一个简单的问题,我找不到答案: 如何从 ST(0) (FPU的顶部)转移价值 堆栈)到 EAX 吗? 还: 此代码正确吗: ; multiply (dot) two vectors of 3 floats passed by pointers as arg 1 arg 2 ; passings are ok I think,
..
在 masm32 FPU中进行一些操作.但是我无法清除FPU的堆栈,例如之后是ST(0)-ST(7).是否有任何清除堆栈的说明.你能建议什么吗? P.S. 假设清除堆栈以进行进一步的计算. 解决方案 您可以使用FINIT初始化FPU并将数据寄存器ST(0)-ST(7)标记为空(它不会清除其内容虽然)
..
我写了一个信号处理程序来捕获FPE错误.即使发生这种情况,我也需要继续执行.我收到ucontext_t作为参数,我可以将错误的操作数从0更改为另一个值,但是FPU上下文仍然很糟糕,并且我遇到了无限循环? 有人已经在Linux上操纵过ucontext_t结构吗? 我终于找到了一种通过清除ucontext_t的状态标志来处理这些情况的方法,如下所示: ... const long i
..
我知道x87具有更高的内部精度,这可能是人们所看到的与SSE操作之间的最大差异.但是我想知道,使用x87还有其他好处吗?我有在任何项目中自动键入-mfpmath=sse的习惯,我想知道我是否还缺少x87 FPU提供的其他功能. 解决方案 对于手写asm,x87的某些指令在SSE指令集中不存在. 所有这些都是三角函数,例如fsin,fcos,fatan,fatan2和一些指数/对数.
..
根据 http://cs.smith.edu/~thiebaut/ArtOfAssembly/CH14/CH14-4.html#HEADING4-5 14.4.4.1 FLD指令 fld mem_32 fld mem_64 [bx] 我的目标是将常数10存储到我的fPU堆栈中. 为什么我不能这样做? __asm { move bx, 0x0004; fld dword
..
我想知道MXCSR控制寄存器中存储的值的生存期是多少(包括用于非常规浮点数的FTZ和DAZ配置):是否在线程范围内,还是CPU/FPU上的所有处理都通用? 我想知道的是,是否需要在线程池的每个线程的开始处或在应用程序中一次设置它(MXCSR),还是会影响应用程序中的其他所有内容和/或系统吗? 感谢您的帮助! 解决方案 是的,您必须在每个线程的开头设置MXCSR寄存器.任何线程都
..
我正在尝试移植_controlfp(_CW_DEFAULT,0xffffffff);从WIN32到Mac OS X/Intel.我绝对不知道该如何移植这条指令...而你呢?谢谢! 解决方案 尝试
..
我一直在研究多精度算术,在Jonathan Richard Shewchuk,“自适应精度浮点算术和快速鲁棒几何谓词",1997年,Discrete& Co.,Ltd.中描述了一种不错的快速算法.计算几何,第305-363页.但是,这些算法都依赖于FPU,使用的是从头到尾的平局决胜制. 在CPU上,这很容易,只要检查或设置FPU状态字就可以了.但是,还没有用于GPU编程的指令. 这就是
..
_control87 注意: _control87 [...]同时影响x87和SSE2的控制字。 SSE和SSE2 MXCSR控制寄存器相同,但是,文档中未提及SSE单元。 _control87 会影响SSE单元的MXCSR控制寄存器还是仅对SSE2有用? 解决方案 我挖出一个旧的Pentium III,并用以下代码检查: #include
..
现代FPU将使用哪些方法来计算先验函数? 例如,英特尔CPU提供了FSIN,FCOS,FYL2X等指令.我很好奇在硬件中实际使用哪种算法. 我天真的猜测可能是泰勒级数,也许结合了一些查找表,但这不过是一个疯狂的猜测而已.请赐教. P.S.这个问题不仅仅是英特尔硬件. 解决方案 一个开始的地方可能是" 更新08/13/2014 原始链接已损坏.可在此处找到IEEE的
..
我们使用FPU解决汇编语言中的实数问题。通常我们使用C语言或就绪函数编写输入和输出代码。例如: ;接收控制台的输入和输出描述符 调用GetStdHandle,STD_INPUT_HANDLE mov hConsoleInput,eax 调用GetStdHandle,STD_OUTPUT_HANDLE mov hConsoleOutput,eax 调用ClearScreen
..