3

基本的な三角関数の実装は、Visual C++CRTのどこにあるのでしょうか。

「sin」のファイルを検索するとC:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\crt、の定義が表示されますが、それ以上は表示されません(一部のdefファイルmath.hのセクションでの言及を除く)。EXPORTS

私の知る限りでsinは、コンパイラがそれ自体をマシンコードに変換するキーワードではありません。したがって、たとえその実装がいくつかの単純なアセンブリコードに要約されたとしても、どこかに実装がなければなりません。

ここで何が欠けていますか?どこにあるの?

編集:明らかに、私は十分に明確ではありませんでした:コンパイルされたlibまたはdllではなく、ソースコードを探しています

4

2 に答える 2

5

それは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
    :   :   :
于 2011-10-01T15:33:33.763 に答える
1

libcにあります。静的にビルドしている場合は、libc.libにあります。動的にビルドしている場合は、msvcrt.dllにあります

于 2011-10-01T15:23:53.510 に答える