Где найти исходный код математической функции ceil () в glibc? - PullRequest
1 голос
/ 15 марта 2012

Я скачал исходный код glibc и давно нахожу функцию ceil (), но не могу ее найти, кто подскажет, где она?

И где я могу найти подробную информацию о том, как найти исходный код определенной функции в исходном коде glibc.

Спасибо.

1 Ответ

5 голосов
/ 15 марта 2012

По-видимому, он написан на ассемблере. В основном это делается в три этапа:

  1. Изменить режим округления на «округление»
  2. округление до целого числа (FRNDINT)
  3. восстановить предыдущий режим округления.

К сожалению, код для изменения режима округления довольно уродлив. Режим округления составляет несколько бит в регистре управления с плавающей запятой. Вы не можете изменить FPCR внутри FPU, поэтому вам нужно сохранить его, затем загрузить в регистр на CPU, изменить некоторые биты, сохранить их и загрузить измененную версию обратно в FPU. Затем вы выполняете одну инструкцию FP и делаете то же самое снова, но в обратном порядке.

Мне кажется, что я вспоминаю, как некоторые из литературы Intel много лет назад говорили об этом и (возможно) говорили о лучшем способе справиться с этим - но я мог бы вообразить это, и даже если это не так, я не не помню, как работала их улучшенная версия.

...