1

我下载了glibc的源码,找了半天函数ceil(),但是找不到,谁能告诉我在哪里?

我在哪里可以找到有关如何在 glibc 的源代码中找到某些函数的源代码的详细信息。

谢谢你。

4

1 回答 1

5

猜测一下,它可能是用汇编语言编写的。基本上分三步完成:

  1. 将舍入模式更改为“向上舍入”
  2. 四舍五入到整数 (FRNDINT)
  3. 恢复以前的舍入模式。

不幸的是,更改舍入模式的代码相当难看。舍入模式是浮点控制寄存器中的几位。您无法更改 FPU 内的 FPCR,因此您必须将其存储,然后将其加载到 CPU 上的寄存器中,修改一些位,将其存储,然后将修改后的版本加载回 FPU。然后你执行一条 FP 指令,并再次执行相同的操作,但相反。

我似乎确实记得几年前英特尔的一些文献中谈论过这个问题,并且(也许)谈论过一种更好的处理方式——但我可以想象,即使我不是,我不记得如何他们改进的版本有效。

于 2012-03-15T03:49:46.567 回答