我可以在 Linux 内核中调用任何 GCC 内置函数吗?

标签 c linux gcc linux-kernel x86

一些 GCC 的内置函数处理浮点值:http://gcc.gnu.org/onlinedocs/gcc-4.2.4/gcc/Other-Builtins.html

由于 Linux 内核默认不支持浮点运算,这是否意味着我不能在 Linux 内核模块中使用这些内置的 GCC 函数?

如果我为此做了一些事情,我能使用它们吗(假设我在 x86 系统上):

kernel_fpu_begin();

float x = 3.14;
x = __builtin_ceil(x);

kernel_fpu_end();

最佳答案

Linux 内核不允许在内部使用 float ,因为 x86 上的 float 使用特殊的寄存器堆栈,保存/恢复成本很高。在(非常)少数需要非整数的地方,使用了定点(即具有假定小数点或二进制点的整数运算)。

关于我可以在 Linux 内核中调用任何 GCC 内置函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15837840/

相关文章:

c++ - 编译器找不到 'aligned_alloc' 函数

c - c 文件的局部变量未在堆栈中创建,其 GCC 编译代码,

c - 将十六进制字符串转换为十六进制字符数组的快速方法

python - 嵌入式Python,导入数学错误

linux - 通过命令行在 Jboss 7.0.1 中部署 war

c - C 语言的基本插入排序算法(TDM-GCC 编译器)

c - C 中的类型检查宏参数

python - 如何在 50 秒后杀死子进程?

python - Azure Batch Linux vm运行脚本

GCC 修改/自定义目标,在 x86-64 上具有自定义调用约定