`

在Windows下编译运行llvm-lua

阅读更多

 

1. 编译llvm-lua

http://code.google.com/p/llvm-lua/

注意,

1)编译时可能需要修改源代码以适应VC2008。

2)需要编译LLVM(http://llvm.org/releases/download.html#2.7)

3)对于VC2008,需要把所有lua脚本引擎核心使用过的API和常数都在exe中导出,好像dll那样(尤其是lua的OP码),否则会有运行期错误。(怀疑是因为llvm-lua在内存中动态生成脚本对应的汇编代码,但没有动态生成lua脚本引擎的代码,而是与llvm-lua.exe共享这些API)

 

我的编译版本见下(对应llvm 2.7,但不含LLVM 2.7的编译器),仅测试用:

svn://www.svnhost.cn/weimingtom_mmcstudy/llvm-lua

 

2. 使用llvm-lua运行

 

 

C:\Documents and Settings\Administrator\桌面\llvm_lua-1.2.0_vc9_bin\bin>llvm-lua test\hello.lua
Hello world, from Lua 5.1!

 

 

3. 用LLVM自带的lli工具JIT运行LLVM的bc码文件(不使用llvm-lua)

 

 
D:\java\LLVM\bin>lli luac.out
Hello world, from Lua 5.1

 

 

这里运行结果和上面不一样可能是因为llvm的版本不同。

 

4. 编译lua脚本为LLVM的bc码文件

 

C:\Documents and Settings\Administrator\桌面\llvm_lua-1.2.0_vc9_bin\bin>llvm-luac -bc test\hello.lua
 

 

5. 反编译LLVM的bc码文件为汇编源代码(intel格式)

 

 
D:\java\LLVM\bin>llc -O0 -asm-verbose -x86-asm-syntax=intel luac.out -o lua.out.s

 

6. 其它问题:

用lli.exe明显比llvm-lua.exe要慢。

有待继续研究如何把lua脚本文件直接编译成exe,以及llvm-lua的内部运行机制。

 

分享到:
评论

相关推荐

    llvm-project-18.1.8.src.tar.xz

    llvm-project-18.1.8.src 官方离线下载包 # 下载 llvm-project wget -nc https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/llvm-project-18.1.8.src.tar.xz # 解压 llvm-project-18.1.8.src...

    LLVM-19.1.0-win64.exe

    LLVM-19.1.0-win64.exe LLVM19.10版本window64位

    LLVM-16.0.0-win64.exe

    文章《将 Rust 程序编译为 WebAssembly》可能用到的资源:LLVM-16.0.0-win64.exe。

    llvm-config.exe windows x64

    windows10 x64 编译的llvm-config,使用rust版的opencv时可能需要。在官方预编译安装后添加到环境变量即可。

    llvm-project-18.1.6-1.src.tar.gz

    llvm-project_18.1.6-1.src.tar.gz llvm-project_18.1.6-1.src.tar.gz llvm-project_18.1.6-1.src.tar.gz llvm-project_18.1.6-1.src.tar.gz llvm-project_18.1.6-1.src.tar.gz llvm-project_18.1.6-1.src.tar.gz ...

    llvm-13.0.1-1.5.7-API文档-中文版.zip

    赠送jar包:llvm-13.0.1-1.5.7.jar; 赠送原API文档:llvm-13.0.1-1.5.7-javadoc.jar; 赠送源代码:llvm-13.0.1-1.5.7-sources.jar; 赠送Maven依赖信息文件:llvm-13.0.1-1.5.7.pom; 包含翻译后的API文档:llvm-...

    LLVM-13.0.0-win64.exe

    LLVM-13.0.0-win64.exe

    LLVM-10.0.0-win64.zip

    LLVM(Low-Level Virtual Machine)是一个开源的编译器基础设施项目,由Chris Lattner在2003年创建...通过LLVM-10.0.0-win64.zip提供的Windows版本,用户可以在Windows环境下充分利用LLVM的功能,提高代码质量和性能。

    方舟编译器工具openarkcompiler - clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz2

    方舟编译器工具openarkcompiler # 安装Clang编译器并完成配置(用于编译方舟编译器代码) 下载**clang+llvm-8.0.0-...GN_AR = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar" ```

    llvm-config.zip

    然而,TVM在编译时还需要`llvm-config.exe`这个工具,它是LLVM的一个命令行实用程序,用于获取关于LLVM配置的信息,如库文件的位置、链接选项等。在某些情况下,预编译的LLVM安装可能不包含这个文件,或者TVM可能...

    LLVM-10.0.0-win64.exe.zip

    总的来说,LLVM-10.0.0-win64.exe是Windows平台上一个强大的工具集,不仅用于编译和优化代码,还能用于代码分析、调试和教学研究。对于开发者而言,它提供了灵活的接口来构建自定义的编译工具链,满足各种特定需求,...

    winlibs-x86-64-win32-seh-gcc-14.2.0-llvm-19.1.3-mingw-w64.zip

    winlibs-x86-64-win32-seh-gcc-14.2.0-llvm-19.1.3-mingw-w64.zip包中包含了针对x86_64架构的64位Windows系统编译的工具链,支持Win32 SEH异常处理模型。SEH(Structured Exception Handling)是一种异常处理机制,...

    LLVM-12.0.0-win64.exe

    Clang是一个由Apple主导编写,基于LLVM的C/C++/Objective-C编译器.快速编译和较少内存占用 ;有诊断功能;...https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0/LLVM-12.0.0-win64.exe

    LLVM-11.0.0-win64.exe.zip

    在压缩包子文件的文件名称列表中,我们看到"LLVM-11.0.0-win64.exe",这是LLVM的Windows安装程序,用户可以通过运行这个文件来安装LLVM。这个文件可能会引导用户完成一系列步骤,包括选择安装路径、设置环境变量,...

    LLVM-12.0.0-6923b0a7-win64.exe

    LLVM-12.0.0-6923b0a7-win64.exe

    LLVM-18.1.4-win64安装包 和clang-format配置

    在这个“LLVM-18.1.4-win64安装包”中,我们获得了LLVM的Windows 64位版本。LLVM的Windows版通常包含了编译器、调试器和其他相关工具,使得开发者能够在Windows环境下进行高性能的编译和调试工作。安装包可能包含LLD...

    LLVM-8.0.1-win64.zip

    LLVM-8.0.1-win64.zip这个压缩包包含了LLVM 8.0.1版本的Windows 64位构建,对于在Windows平台上使用LLVM进行开发的用户来说非常实用。 LLVM的主要组成部分包括: 1. **Clang**:这是一个C、C++、Objective-C和...

    llvm-8.0.1.src.tar.xz

    在下载并解压缩"llvm-8.0.1.src.tar.xz_FreeDownload.zip"后,你会得到"llvm-8.0.1.src.tar.xz"文件。你需要再次使用解压缩工具(如tar和xz或类似支持这两种格式的工具)来解压这个源代码文件。命令行中,你可以使用...

    winlibs-x86-64-posix-seh-gcc-14.2.0-llvm-19.1.1-mingw-w64ucrt-12.0.0-r2

    这样的工具链使得开发者能够在Windows平台上开发兼容类Unix环境的软件,并且能够利用现代编译技术进行高效的代码编译和优化。 标签中的"gcc"强调了GCC编译器在这一工具链中的核心地位,它是连接其他组件和提供编程...

    clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04

    clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04,官网下载实在是太慢了!!!

Global site tag (gtag.js) - Google Analytics