MSVCRT: Где находится инструмент (исходный код) sin, cos et al? - PullRequest
3 голосов
/ 01 октября 2011

Интересно, где можно реализовать реализацию основных тригонометрических функций в CRT Visual C ++.

Найти в файлах для "sin" в C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\crtпоказывает определение в math.h, но не более того (за исключением упоминания в разделе EXPORTS некоторого файла def).

Насколько я знаю, sin не является ключевым словом, которое переводит компиляторсам к машинному коду.Так что где-то должна быть реализация, даже если эта реализация сводится к какому-то прямому ассемблерному коду.

Чего мне здесь не хватает? Где кодз?? 1016 *

РЕДАКТИРОВАТЬ: Очевидно, я не был достаточно ясен: я ищу исходный код, а не скомпилированный lib или dll

Ответы [ 2 ]

5 голосов
/ 01 октября 2011

Это в MSVCR90.DLL:

C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_...>dumpbin /exports msvcr90.dll | findstr sin
         74   48 0007ABA0 _CIasin = __CIasin
         84   52 0007B5C0 _CIsin = __CIsin
         85   53 0007AF38 _CIsinh = __CIsinh
        159   9D 000236AB __get_flsindex = ___get_flsindex
        160   9E 000236AB __get_tlsindex = ___get_flsindex
        177   AF 0007CE73 __libm_sse2_asin = ___libm_sse2_asin
        178   B0 0007D2C1 __libm_sse2_asinf = ___libm_sse2_asinf
        192   BE 0007FE7C __libm_sse2_sin = ___libm_sse2_sin
        193   BF 00080039 __libm_sse2_sinf = ___libm_sse2_sinf
        696  2B7 0002E27A _mbsinc = __mbsinc
        697  2B8 0002E24E _mbsinc_l = __mbsinc_l
       1211  4BA 0007AB60 asin = _asin
       1349  544 0007B580 sin = _sin
       1350  545 0007AF20 sinh = _sinh

Обновление:

Источник не предоставлен.Библиотека, предоставляющая функции из предоставленного источника CRT, выглядит как crt\src\intel\mt_lib\tran.lib:

C:\...\crt\src\intel\mt_lib> lib /list tran.lib
    :   :   :
f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\build\INTEL\mt_obj\_sincosf_sse2_.obj
f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\build\INTEL\mt_obj\_sincos_sse2_.obj
f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\build\INTEL\mt_obj\_sinf_sse2_.obj
f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\build\INTEL\mt_obj\_sin_sse2_.obj
f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\build\INTEL\mt_obj\_tanf_sse2_.obj
f:\dd\vctools\crt_bld\SELF_X86\crt\prebuild\build\INTEL\mt_obj\_tan_sse2_.obj
    :   :   :
1 голос
/ 01 октября 2011

Это в libc.Если вы строите статически, это в libc.lib.Если вы строите динамически, то это в msvcrt.dll

...