标签: llvm

在Objective - C中乘以预处理器常量

假设我有以下预处理器定义

#define MYNUMBER 10f;

我想在我的代码中使用它如下:

float someResult = MYNUMBER * 3;
Run Code Online (Sandbox Code Playgroud)

当我这样做时,Xcode认为我试图*用作一元指针标记而不是乘法符号,并导致错误.定义这样一个常量并在乘法表达式中使用它的正确方法是什么?

objective-c llvm llvm-clang ios xcode4.3

0
推荐指数
1
解决办法
206
查看次数

在'强'之前预期属性属性

我将SoundCloud API添加到iOS项目中,我没有使用ARC.SoundCloud代码使用

@property(nonatomic, strong, readonly) NSArray *accounts;
Run Code Online (Sandbox Code Playgroud)

我应该改变它吗?

@property(nonatomic, retain) NSArray *accounts;
Run Code Online (Sandbox Code Playgroud)

并继续使用GCC或我应该更改为LLVM编译器?

如果我采用海湾合作委员会的路线,还有什么可以改变的,我不是百分之百关于这两个选项如何影响项目?这只是上面的变化吗?

objective-c llvm ios soundcloud automatic-ref-counting

0
推荐指数
1
解决办法
3856
查看次数

llvm与外部库的链接

我现在在玩LLVM,它是JIT。我对JIT非常感兴趣,然后写了一个小GTK + hello世界:

#include <gtk/gtk.h>

int main ()
{
    gtk_init(NULL, NULL);
    GtkWidget *win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    g_signal_connect (win, "delete-event", G_CALLBACK (gtk_main_quit), NULL);
    GtkWidget *lbl = gtk_label_new ("hello world");
    gtk_container_add (GTK_CONTAINER (win), lbl);
    gtk_widget_show_all (win);
    gtk_main();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式将其编译为Bitcode:

clang -emit-llvm -S a.c `pkg-config --cflags gtk+-3.0`
llvm-link a.s -o a.o
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时

> lli a.o
LLVM ERROR: Program used external function 'gtk_init' which could not be resolved!
Run Code Online (Sandbox Code Playgroud)

我试图找出如何在链接时添加外部库,但没有发现任何问题。有没有办法让它运行?

llvm

0
推荐指数
1
解决办法
3547
查看次数

Clang的ASM输出与GCC的

(我对汇编语言几乎一无所知)。

我正在尝试遵循教程。

问题在于他的编译器和我的测试设置(Linux 32位上的gcc)产生了完全不同的输出,并且比我的主要设置(OSX 64位上的clang)产生的输出要少得多。

这是我的输出 int main() {}

Linux 32位上的gcc

$ cat blank.c
int main() {}
$ gcc -S blank.c              
$ cat blank.s
    .file   "blank.c"
    .text
    .globl  main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    pushl   %ebp
    .cfi_def_cfa_offset 8
    .cfi_offset 5, -8
    movl    %esp, %ebp
    .cfi_def_cfa_register 5
    popl    %ebp
    .cfi_def_cfa 4, 4
    .cfi_restore 5
    ret
    .cfi_endproc
.LFE0:
    .size   main, .-main
    .ident  "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3"
    .section    .note.GNU-stack,"",@progbits
Run Code Online (Sandbox Code Playgroud)

Mac OSX 64位上的叮当声

$ cat blank.c
int main() {}
$ clang …
Run Code Online (Sandbox Code Playgroud)

assembly gcc llvm clang

0
推荐指数
1
解决办法
4749
查看次数

为什么HotSpot需要注册分配?

这是我读过的有关JVM的内容.HotSpot基于堆栈,Dalvik是基于寄存器的.如果HotSpot是基于堆栈的,那么一旦我们将代码重新表示为块,为什么我们需要完成寄存器分配?

另外,llvm在哪里适合这个?我读到我们可以使用llvm核心和后端来获取java源代码.HotSpot是否使用LLVM?

java llvm jvm-hotspot

0
推荐指数
1
解决办法
238
查看次数

使用Clang作为API

我对Clang API了解不多,所以请原谅这个愚蠢的问题.

如果我正在为与C++具有相同或相似功能的语言构建编译器,我可以使用Clang API来为我的代码生成负责吗?例如,假设我实现了一个解析器来解析以下代码:

def class Adder
   def func Add(x as int, y as int) as int
     return x + y
Run Code Online (Sandbox Code Playgroud)

现在说我解析了这段代码并且我有AST,我可以使用Clang API为我生成这个类的代码吗?

我知道我可以使用LLVM API,但我已经这样做了,但是LLVM的级别相对较低而且它不支持OOP,所以我必须自己支持它们,这根本不是一件容易的事.所以我想知道是否还有雇用Clang为我做这项工作.如果是的话,如果您能提供示例和链接,我将不胜感激.

谢谢

code-generation llvm clang

0
推荐指数
1
解决办法
154
查看次数

构建smplayer到LLVM IR并由lli运行

在ubuntu-14.10_amd64中,我通过clang/llvm-3.4编译smplayer-14.9.0.6690.我在src中更改了Makefile,如:

CC=clang 
CXX=clang
CFLAGS = -emit-llvm ...
CXXFLAGS = -emit-llvm ...
LINK = llvm-link
TARGET = smplayer.bc
Run Code Online (Sandbox Code Playgroud)

...

最后我得到了smplayer.bc.然后我用了

$ llvm-dis smplayer.bc -o smplayer.ll 
$ lli -load=... -load=......  smplayer.ll 
Run Code Online (Sandbox Code Playgroud)

但它有一个错误:

LLVM ERROR: Program used external function '__dso_handle' which could not be resolved!
Run Code Online (Sandbox Code Playgroud)

然后我使用clang将bc构建为本机可执行文件,如下所示:

$ clang smplayer.bc -v -o smplayer.na -m64 -L/usr/lib/x86_64-linux-gnu -lz -lQtDBus -lQtScript -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
Run Code Online (Sandbox Code Playgroud)

错误是:

/usr/bin/ld: /tmp/smplayer-7c5fc5.o: undefined reference to symbol '__cxa_pure_virtual@@CXXABI_1.3'
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
Run Code Online (Sandbox Code Playgroud)

c++ linux llvm clang

0
推荐指数
1
解决办法
712
查看次数

LLVM IR中的"移动"操作码是什么?

我是新手LLVM IR,我正在尝试模拟一些x86指令LLVM IR.

这是一个简单的案例:

move %eax, %ebx
Run Code Online (Sandbox Code Playgroud)

但是,mov在查看此处此处的材料后,我没有找到任何相应的操作码.

所以我的问题是:

  1. 如果我想mov使用LLVM IR 模拟操作码?我该怎么办?

  2. 我是新手LLVM IR,也许我会花很长时间在这个"模拟"工作上,关于LLVM IR的最佳参考应该是什么?

如果有人能给我一些帮助,我真的很感激.谢谢!

llvm llc llvm-ir

0
推荐指数
1
解决办法
797
查看次数

Cabal找不到外国图书馆

最近我试图安装llvm-general-3.5.1.0软件包大约一个星期.基本上我收到此错误:链接.我的情况完全相同.Windows 10,ghc 7.10.2,cabal 1.22.4.0.我用cmake从源代码安装了llvm 3.5.2,一切都很顺利.在llvm/lib目录中,我有*.lib文件(例如LLVMAnalysis.lib).

但不知何故,cabal无法看到这些库并给出了这个令人沮丧的错误:

配置llvm-general-3.5.1.0 ... setup.exe:缺少对外部库的依赖:*缺少C库:LLVMLTO,LLVMObjCARCOpts,LLVMLinker,LLVMipo,LLVMVectorize,LLVMBitWriter,LLVMCppBackendCodeGen,LLVMCppBackendInfo,LLVMTableGen,LLVMDebugInfo,LLVMOption,LLVMX86Disassembler, LLVMX86AsmParser,LLVMX86CodeGen,LLVMSelectionDAG,LLVMAsmPrinter,LLVMX86Desc,LLVMX86Info,LLVMX86AsmPrinter,LLVMX86Utils,LLVMJIT,LLVMIRReader,LLVMAsmParser,LLVMLineEditor,LLVMMCAnalysis,LLVMMCDisassembler,LLVMInstrumentation,LLVMInterpreter,LLVMCodeGen,LLVMScalarOpts,LLVMInstCombine,LLVMTransformUtils,LLVMipa,LLVMAnalysis,LLVMProfileData,LLVMMCJIT,LLVMTarget, LLVMRuntimeDyld,LLVMObject,LLVMMCParser,LLVMBitReader,LLVMExecutionEngine,LLVMMC,LLVMCore,LLVMSupport这个问题通常可以通过安装系统包,提供这些库解决(你可能需要"-dev"版本).如果库已经安装但是在非标准位置,那么您可以使用标志--extra-include-dirs =和--extra-lib-dirs =来指定它们的位置.

我真的想在我的Windows上使用这个软件包,但似乎没有任何工作(我尝试了所有的东西,如--extra-lib-dirs,并与MinGW和VS一起编译 - 同样的问题).

我不能接受它不会安装的事实.我的意思是,必须有一些方法来修复此cabal包中的Setup.hs.有没有人知道在这种情况下cabal有什么问题,我该如何尝试解决这个问题?我不知道cabal究竟是如何运作的,也许有这种知识的人会有想法?或者也许有一种方法可以做到这一点没有cabal?

haskell llvm ghc cabal windows-10

0
推荐指数
1
解决办法
883
查看次数

LLVM不会构建libLLVM-3.4.so

我正在尝试使用GCC 4.8.5在CentOS 7上构建llvm 3.4.2.我可以成功构建所有的lib,除了libLLVM-3.4.so不想构建 - 除了那个之外还创建了其他所有的东西.更糟糕的是我以前曾经管理过它,但现在不能再做了.

我已经尝试过使用CMake和autotools,结果相同.有没有我错过的选择?或者配置中可能有一些错误?

linux llvm

0
推荐指数
1
解决办法
568
查看次数