Assembly 可以直接使用LLVM程序集吗?
我读过一些关于llvm的网页和文章,我对这个项目很感兴趣。(也许是为了学习一些关于编译器编写的知识,而不必与x86的复杂点作斗争) 有一些页面描述了如何编写llvm程序集以及如何组装它,但我没有找到任何关于实际执行这些程序需要什么样的环境的内容。我知道我可以在我的文件上运行llvm gcc,以获得在C上下文中可执行的对象文件。但是如果我不想使用C运行时环境(Assembly 可以直接使用LLVM程序集吗?,assembly,llvm,llvm-ir,Assembly,Llvm,Llvm Ir,我读过一些关于llvm的网页和文章,我对这个项目很感兴趣。(也许是为了学习一些关于编译器编写的知识,而不必与x86的复杂点作斗争) 有一些页面描述了如何编写llvm程序集以及如何组装它,但我没有找到任何关于实际执行这些程序需要什么样的环境的内容。我知道我可以在我的文件上运行llvm gcc,以获得在C上下文中可执行的对象文件。但是如果我不想使用C运行时环境(libc.so和friends),那么运行llvm代码需要什么呢?有关于这方面的文件吗?似乎有 llvm as是llvm汇编程序。它读取一个
libc.so
和friends),那么运行llvm代码需要什么呢?有关于这方面的文件吗?似乎有
llvm as是llvm汇编程序。它读取一个包含
人类可读的LLVM汇编语言,将其转换为LLVM位代码,
并将结果写入文件或标准输出
接受LLVM程序集的静态编译器: LLVM汇编语言参考:
快速设置:(适用于windows上的llvm 3.4.0.ll文件) 来自的高级文本编辑器 来自的llvm二进制文件 hello.ll为“无BOM的UTF-8”(此代码为llvm 3.4.0格式): 在命令提示符中:
lli hello.ll
clang hello.ll -o hello.exe
hello.exe
快速安装:(适用于windows上的llvm 3.8.0.ll文件) 来自的高级文本编辑器 来自以下位置的叮当二进制文件: hello.ll为“无BOM的UTF-8”(此代码为llvm 3.8.0格式): 在命令提示符中:
lli hello.ll
clang hello.ll -o hello.exe
hello.exe
或作为单个命令:
clang hello.ll -o hello.exe & hello.exe
关于char16_t、u16String等的错误意味着clang需要:-在Archlinux上的fms compatibility version=19LLVM 11.1不接受上述答案中的代码。这是来自当前的:
cat>hello.ll LLVM IR作为一种语言编写自己的代码并不是很有用。即使是,它的级别也很低,很少使用。我认为没有人支持这样做。相关且有趣,尽管这里提出的观点不一定适用于你:@delnan好吧,你是对的。我的目标是首先理解llvm,然后编写我自己的针对llvm的玩具编译器。@delnan,有时候手动编写IR是有意义的。而且有一套相当全面的工具来完成这项工作:llvmas
,llvmdis
,lli
,llc
。libclc在源代码中有一些ll
文件,例如,如何处理位码?您可以只键入llvm作为foo.ll/a、 退出
,它就像一个符咒?运行代码需要什么?这个项目的切入点是什么?etc@FUZxxl,您的序列应该是llvm作为foo.ll;llc——您的平台选项等等等等/a、 out
或通过执行lli foo.bc
来使用JIT编译器直接运行位代码。@SK logic,我认为llc
不会输出本机机器代码,而是输出汇编语言。但是,您可以使用llvm ld foo.bc
生成本机代码。@boyers,llc可以在某些平台上直接发出ELF(尽管它仍然是实验性的和不稳定的)。是的,llvm IR在版本之间会发生变化。这是非常不幸的。