1

glibcのソースコードをダウンロードして、長い間ceil()関数を見つけましたが、見つかりません。誰がどこにあるのか教えてくれますか?

また、glibcのソースで特定の関数のソースコードを見つける方法に関する詳細情報はどこにありますか。

ありがとうございました。

4

1 に答える 1

5

推測では、おそらくアセンブリ言語で書かれています。これは基本的に3つのステップで行われます。

  1. 丸めモードを「切り上げ」に変更します
  2. 整数に丸める(FRNDINT)
  3. 以前の丸めモードを復元します。

残念ながら、丸めモードを変更するコードはかなり醜いです。丸めモードは、浮動小数点制御レジスタの数ビットです。FPU内のFPCRは変更できないため、保存してからCPUのレジスタにロードし、一部のビットを変更して保存し、変更したバージョンをFPUにロードし直す必要があります。次に、1つのFP命令を実行し、同じことをもう一度実行しますが、逆に実行します。

私は何年も前にこれについて話し、(おそらく)それを処理するためのより良い方法について話しているIntelの文献のいくつかを思い出しているようです-しかし私はそれを想像することができました、そして私がそうでなくても、私はどのように覚えていません彼らの改良版は機能した。

于 2012-03-15T03:49:46.567 に答える