Реализация функций math.h в ассемблере - PullRequest
0 голосов
/ 15 сентября 2009

Я использовал gdb для пошагового выполнения кода ассемблера, который реализует стандартную функцию C sin () в стандартной математической библиотеке C (-lm -march = pentium3 -mfpmath = 387). Там много заглушек, и я не знаю, почему они не просто вставили инструкцию ассемблера fsin. То же самое происходит с другими математическими функциями. Почему они просто не вызывают соответствующую инструкцию FPU?

Ответы [ 2 ]

2 голосов
/ 12 мая 2012

Потому что «много заглушки там» быстрее и точнее, чем инструкция x87 fsin. Вопреки распространенному мнению, авторы библиотек, как правило, знают, что они делают.

0 голосов
/ 15 сентября 2009

Вы, вероятно, должны включить встроенные функции - внутренняя реализация sinf почти наверняка будет встроенной (если, скажем, кто-то не берет адрес этого или другие необычные обстоятельства).

В VS это означает компиляцию с /Oi.

...