我已经阅读了一些关于llvm的网页和文章,我对这个项目很感兴趣.(也许要学习一些关于编译器编写的东西,而不需要与x86的复杂点挣扎).
有些页面描述了如何编写llvm程序集以及如何组装它,但我没有找到任何关于实际执行这些环境所需的环境.我知道我可以在我的文件上运行llvm-gcc来获取可在C上下文中执行的目标文件.但是在我不想使用C运行时环境(libc.so和朋友)的情况下,运行llvm代码需要什么?那有什么文件吗?
快速设置:(对于 Windows 上的 llvm 3.4.0 .ll 文件)
来自https://notepad-plus-plus.org/ 的高级文本编辑器
来自https://github.com/CRogers/LLVM-Windows-Binaries 的llvm 二进制文件
hello.ll 为“没有 BOM 的 UTF-8”(此代码采用 llvm 3.4.0 格式):
@msg = internal constant [13 x i8] c"Hello World!\00"
declare i32 @puts(i8*)
define i32 @main() {
call i32 @puts(i8* getelementptr inbounds ([13 x i8]* @msg, i32 0, i32 0))
ret i32 0
}
Run Code Online (Sandbox Code Playgroud)
在命令提示符中:
lli hello.ll
Run Code Online (Sandbox Code Playgroud)
快速设置:(对于 Windows 上的 llvm 3.8.0 .ll 文件)
来自https://notepad-plus-plus.org/ 的高级文本编辑器
clang 二进制文件来自:http : //llvm.org/releases/download.html#3.8.0
hello.ll 为“无 BOM 的 UTF-8”(此代码采用 llvm 3.8.0 格式):
@msg = internal constant [13 x i8] c"Hello World!\00"
declare i32 @puts(i8*)
define i32 @main() {
call i32 @puts(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @msg, i32 0, i32 0))
ret i32 0
}
Run Code Online (Sandbox Code Playgroud)
在命令提示符中:
clang hello.ll -o hello.exe
hello.exe
Run Code Online (Sandbox Code Playgroud)
或者作为单个命令:
clang hello.ll -o hello.exe & hello.exe
Run Code Online (Sandbox Code Playgroud)
关于 char16_t、u16String 等的错误意味着 clang 需要:-fms-compatibility-version=19