gpt4 book ai didi

c - 给定 float 时如何避免 FPU?

转载 作者:太空狗 更新时间:2023-10-29 15:51:11 25 4
gpt4 key购买 nike

好吧,这根本不是优化问题。

我正在编写一个(目前)简单的 Linux 内核模块,我需要在其中找到某些位置的平均值。这些位置存储为浮点(即 float)变量。 (我是整个事情的作者,所以我可以改变它,但我宁愿保持 float 的精度,如果可以避免的话,我不参与其中)。

现在,这些位置值存储(或至少用于)在内核中只是为了存储。一个用户应用程序写入这些数据(通过共享内存(我正在使用 RTAI,所以是的,我在内核和用户空间之间共享内存)),其他人从中读取。我假设从浮点变量读取和写入不会使用 FPU,所以这是安全的。

安全,我的意思是avoiding FPU in the kernel ,更不用说某些系统甚至可能没有 FPU。我不会使用 kernel_fpu_begin/end ,因为这可能会破坏我任务的实时性。

现在在我的内核模块中,我真的不需要太多精度(因为无论如何位置都是平均的),但我需要它达到 0.001。 我的问题是,如何在不使用 FPU 的情况下将 float 便携地转换为整数(原始数的 1000 倍)?

我考虑过从 float 的位模式中手动提取数字,但我不确定这是否是个好主意,因为我不确定字节顺序如何影响它,或者即使所有架构中的 float 都是标准的.

最佳答案

如果你想告诉 gcc 使用软件浮点库,显然有一个开关,尽管在标准环境中可能不是交 key :

Using software floating point on x86 linux

事实上,这篇文章表明 linux 内核及其模块已经使用 -msoft-float 编译:

http://www.linuxsmiths.com/blog/?p=253

也就是说,@PaulR 的建议似乎是最明智的。如果您提供一个 API 来执行您喜欢的任何转换,那么我不明白为什么它比其他任何东西都丑陋。

关于c - 给定 float 时如何避免 FPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com