小编Fra*_* C.的帖子

LLVM中的libc ++和libc ++ abi库有什么区别?

我看到这两个项目非常相关,但它们之间有什么区别?官方网页并没有说太多.

我知道ABI(应用程序二进制接口)用于在不同平台之间提供低级二进制接口.那么libc ++ abi用于为不同的平台提供不同的实现,以及libc ++的通用接口吗?

更好的是给出一些具体的例子,例如libc ++ abi中包含的内容以及libc ++中的内容.

谢谢.

libc++

14
推荐指数
1
解决办法
3383
查看次数

如何在for循环中获取变量的数量?

考虑以下代码:

int main() {
    int a = 0;
    int b = 1;

    for (int i = 0; i < 3; i++) {
        a = 2;
        int c = 1;
        int d = 3;
        d = a + c;
    }

   a = b+2;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码段中,三个变量的生命周期包含在循环体(i,cd)中.我希望能够使用LLVM计算任何给定循环体中存在寿命的变量(即对于此循环,我的代码应该返回3).

我找到了实时变量分析,但是我无法使用它来查找我上面描述的内容.

c c++ llvm

12
推荐指数
1
解决办法
569
查看次数

从位置i开始生产具有n个掩模的最快方法

什么是最快的方法(在常见的现代架构上的cpu周期方面),len从位置开始生成位设置为1 的掩码pos:

template <class UIntType>
constexpr T make_mask(std::size_t pos, std::size_t len)
{
    // Body of the function
}

// Call of the function
auto mask = make_mask<uint32_t>(4, 10);
// mask = 00000000 00000000 00111111 11110000 
// (in binary with MSB on the left and LSB on the right)
Run Code Online (Sandbox Code Playgroud)

另外,是否有任何编译器内在函数或BMI函数可以帮助?

c++ optimization bit-manipulation bitmask

9
推荐指数
2
解决办法
852
查看次数

NASM是不一致还是我只是错过了即时CMP的明显事实?

"警告:签名的dword立即超出界限"是我现在存在祸害,因为它似乎不一致或者我只是没有看到明显的事实.

我声明了以下结构:

struc   FRTType        
        .class    resq  1   ; Class
        .type     resq  1   ; Type
endstruc 
Run Code Online (Sandbox Code Playgroud)

我有以下分配:

%assign TYPE_SCALAR     0xfffffffffffffff1
%assign INTEGER         0xffffffff1000a8a9
Run Code Online (Sandbox Code Playgroud)

在我的功能中:

cmp     qword [rdi+FRTType.class], TYPE_SCALAR  ; This works fine
jne     .exception
cmp     qword [rdi+FRTType.type], INTEGER       ; THIS PRODUCES WARNING
Run Code Online (Sandbox Code Playgroud)

我知道我可以mov rax, INTEGER然后做比较,但这似乎不需要,因为第一次比较没有问题.

assembly x86-64 nasm

8
推荐指数
1
解决办法
175
查看次数

无法从汇编中嵌入互操作类型

我知道之前已经在这里问了类似的问题,但我不确定它们是否真正解决了我的问题,除非我误解了它们.

我今天早上一直在处理一个应用程序而且没有任何问题构建或重建解决方案,但是在吃完午餐然后回来之后(我打开程序),我突然无法构建它,因为它是返回3个错误,我之前没遇到过的错误.

错误1:

无法嵌入程序集'office'中的互操作类型,因为它缺少'ImportedFromTypeLib'属性或'PrimaryInteropAssembly'属性.

错误2:

无法在程序集'office'中嵌入互操作类型,因为它缺少'Guid'属性

错误3:

无法加载引用的库'C:\ WINDOWS\assembly\GAC_MSIL\Office\15.0.0.0__71e9bce111e9429c\Office.dll':系统找不到指定的文件.C:\ WINDOWS \装配\ GAC_MSIL \办公室\ 15.0.0.0__71e9bce111e9429c\Office.dll

是什么导致这些错误突然出现?

签入项目属性>参考>添加> COM后,我可以看到引用了Office 15.0对象库.那我该怎么办?应用程序打开时,它们似乎很奇怪吗?

.net vb.net interop reference-library

6
推荐指数
2
解决办法
1万
查看次数

LLVM代码生成器:机器代码表示与机器无关吗?

请注意:这个问题不是关于LLVM IR,而是LLVM的MIR,一个低于前者的内部中间表示.

关于LLVM 机器代码描述类的文档说明(突出我的):

在高级别,LLVM代码被转换为由MachineFunction,MachineBasicBlock和MachineInstr实例构成的机器特定表示...

然而,同一段落继续说:

这种表示完全是目标不可知的,以最抽象的形式表示指令......

我的问题是,如何理解这一段?

我很难协调这个中间表示是机器特定的并且同时与目标无关的声明.在LLVM的上下文中,我认为"机器"和"目标"意味着相同的东西 - 编译的可执行文件使用的指令集架构(例如x86_64,MIPS).

欢迎举例.

llvm compiler-optimization

6
推荐指数
1
解决办法
86
查看次数

clang-format 自动更改功能块注释,如何禁用它?

当我选择ColumnLimit任何非零值时。它将块注释转换为 Doxygen 块注释(它*在新行之前添加空格)。但我不想改变它。我怎样才能禁用它?

我的 .clang 格式文件

ColumnLimit: 100
IndentWidth: 4
TabWidth: 4
UseTab: Never
Run Code Online (Sandbox Code Playgroud)

它转换以下块注释

/*****************************************************************************
*   A brief comments.
*
*   @param theory .
*
******************************************************************************/
Run Code Online (Sandbox Code Playgroud)

进入这个

/*****************************************************************************
 *   A brief comments.
 *
 *   @param theory .
 *
 ******************************************************************************/
Run Code Online (Sandbox Code Playgroud)

注意:它在每行之前添加了空格,我不需要这些空格。我不想通过禁用每个 Doxygen 注释块的 clang-format 来解决这个问题。这看起来很荒谬。

有什么好的建议吗?:-)

c regex clang clang-format

6
推荐指数
1
解决办法
1733
查看次数

无法在Sublime Text 3中打开多个文件

无论我处于单列还是双列模式,我每个窗口只能打开2-3个文件(标签).

当我点击似乎是限制的内容时,尝试打开文件(通过单击补充工具栏视图)将替换已打开的文件.

是否有一个我可以改变的设置,或者我是否达到了工作设计的限制?

环境:

  • Sublime Text 3 Stable Build 3103
  • OS X(El Capitan)10.11.4

顺便说一句:如果我使用文件打开它似乎没有相同的问题,因为我可以通过这种方式打开文件.

sublimetext3

5
推荐指数
1
解决办法
6698
查看次数

Rust 中的线程局部变量将使用多少字节?

我想Option<usize>在 Rust 库中使用类型的线程局部变量。对于依赖我的库的板条箱,每个线程将使用多少字节?我对 Rust 1.39 以及面向 Linux 的三种处理器感兴趣:amd64、x86 和 arm32。

multithreading thread-local-storage rust

5
推荐指数
0
解决办法
209
查看次数

函数名中的问号

我只是在查看 clojure 并在示例页面上找到了以下代码行

(filter even? [1 2 3])
Run Code Online (Sandbox Code Playgroud)

虽然这是相当标准的代码,但令我惊讶的是,他们使用了“?” 使谓词更容易阅读。

是否也可以让 haskell 接受它作为函数名称?到目前为止,我发现https://wiki.haskell.org/Unicode-symbols不幸的是不包含“?”。

haskell

4
推荐指数
1
解决办法
1208
查看次数