`

在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-16.0.0-win64.exe

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

    LLVM-13.0.0-win64.exe

    LLVM-13.0.0-win64.exe

    方舟编译器工具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-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-10.0.0-win64.zip

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

    LLVM-10.0.0-win64.exe.zip

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

    LLVM-11.0.0-win64.exe.zip

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

    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-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

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

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

    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或类似支持这两种格式的工具)来解压这个源代码文件。命令行中,你可以使用...

    LLVM-5.0.1-win64.rar

    这些优化可以在编译时静态应用,也可以在运行时动态进行。LLVM还支持自定义插件,允许开发者创建自己的优化规则。 后端则负责将优化过的LLVM IR转换为目标机器代码,可以是汇编语言或者直接的机器代码。LLVM支持...

    clang+llvm-12.0.0-x86-64-linux-gnu-ubuntu-16.04

    clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-16.04

    LLVM-9.0.0-win64.rar

    这个压缩包“LLVM-9.0.0-win64.rar”包含了LLVM针对Windows 64位操作系统的版本,即LLVM-9.0.0-win64.exe,它是一个可执行文件,用于在Windows环境下安装LLVM。通过提供的链接(http://clang.llvm.org/),用户可以...

    winlibs-x86_64-posix-seh-gcc-11.3.0-llvm-14.0.3-mingw-w64msvcrt-10.0.0-r3.zip

    winlibs-x86_64-posix-seh-gcc-11.3.0-llvm-14.0.3-mingw-w64msvcrt-10.0.0-r3.zip

    clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz

    LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容...

    winlibs-i686-posix-dwarf-gcc-10.2.0-llvm-11.0.0-mingw-w64-8.0.0-r5.zip

    标题中的"winlibs-i686-posix-dwarf-gcc-10.2.0-llvm-11.0.0-mingw-w64-8.0.0-r5.zip"表明这是一个针对Windows 32位平台的编译器工具链压缩包,其中包含了多个关键组件。首先,`i686`是指英特尔32位架构,说明这是为...

    llvm-toolset-7-clang-5.0.1-4.el7.x86_64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

Global site tag (gtag.js) - Google Analytics