我正在尝试按照http://clang.llvm.org/get_started.html “使用 Visual Studio”部分中的说明在 Windows 8.1 上使用 MS Visual Studio 2013 构建 Clang 。
我已经将llvm签出到D:\Current\llvm,clang到D:\Current\llvm\tools\clang,创建D:\Current\llvm_build并"D:\Program Files (x86)\cmake-3.3.0-win32-x86\bin\cmake.exe" -G "Visual Studio 12" ..\llvm在llvm_build目录中运行。
LLVM.sln 和其他文件是在llvm_build目录中创建的,没有任何严重错误。但是当我在 Visual Studio 中打开这个解决方案并尝试编译clang项目时,我收到如下错误:
1>D:\Current\llvm\tools\clang\include\clang/Basic/DiagnosticIDs.h(53): fatal error C1083: Cannot open include file: 'clang/Basic/DiagnosticCommonKinds.inc': No such file or directory (D:\Current\llvm\tools\clang\tools\driver\cc1as_main.cpp)
Run Code Online (Sandbox Code Playgroud)
实际上,在llvm和llvm_build文件夹中都找不到 DiagnosticCommonKinds.inc 文件。我想它应该在构建过程中由 CMake 生成,但由于某种原因,这不会发生,我也没有收到任何有意义的错误。
这是我得到的 CMake 输出:
-- No build type selected, default to …Run Code Online (Sandbox Code Playgroud) 有人可以解释以下代码的作用吗?
addsd xmm0, ds:__xmm@41f00000000000000000000000000000[edx*8]
Run Code Online (Sandbox Code Playgroud)
我想浮点寄存器xmm0中加了一些值,但是__xmm @ 41f00000000000000000000000000000常量是什么意思?有没有我可以阅读的文件?
这是我想要了解的完整代码片段:
cvtsi2sd xmm0, [ebp+var_2C8]
mov edx, [ebp+var_2C8]
shr edx, 1Fh
addsd xmm0, ds:__xmm@41f00000000000000000000000000000[edx*8]
Run Code Online (Sandbox Code Playgroud)
ebp + var_2C8是无符号整数值.
究竟是什么添加到xmm0?这个计算有可能吗?
更新.
这是此代码的原始反汇编:
cvtsi2sd xmm0,dword ptr [ebp-2C8h]
mov edx,dword ptr [ebp-2C8h]
shr edx,1Fh
addsd xmm0,mmword ptr [edx*8+2685CC0h]
Run Code Online (Sandbox Code Playgroud)
看起来像常量数组的一些双值被添加到xmm0 ...