小编leo*_*leo的帖子

在 Windows 上构建 Clang:DiagnosticCommonKinds.inc 标头不存在

我正在尝试按照http://clang.llvm.org/get_started.html “使用 Visual Studio”部分中的说明在 Windows 8.1 上使用 MS Visual Studio 2013 构建 Clang 。

我已经将llvm签出到D:\Current\llvmclangD:\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" ..\llvmllvm_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)

实际上,在llvmllvm_build文件夹中都找不到 DiagnosticCommonKinds.inc 文件。我想它应该在构建过程中由 CMake 生成,但由于某种原因,这不会发生,我也没有收到任何有意义的错误。

这是我得到的 CMake 输出:

-- No build type selected, default to …
Run Code Online (Sandbox Code Playgroud)

windows llvm clang

7
推荐指数
1
解决办法
2358
查看次数

这个x86汇编指令做了什么(添加了xmm0,ds:__ xmm @ 41f00000000000000000000000000000 [edx*8])?

有人可以解释以下代码的作用吗?

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是无符号整数值.

  1. ebp + var_2C8转换为float并移动到xmm0寄存器
  2. ebp + var_2C8移动到edx并右移31位
  3. 从此移位得到的东西被添加到xmm0.

究竟是什么添加到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 ...

x86 assembly sse

7
推荐指数
1
解决办法
403
查看次数

标签 统计

assembly ×1

clang ×1

llvm ×1

sse ×1

windows ×1

x86 ×1