c++的LLVM替代方案(字节码生成)
Alternative to LLVM for C++ (bytecode generation)
我在flex
和bison
中编写了我的词法分析器和解析器。我的项目是基于c++的,我想坚持下去。目前,我的解释器是用C++
编写的,但我想通过转换为字节码(某种形式的vm级字节码)来实现更快的执行时间,当我的解释器工作时。我知道这可以通过LLVM
来实现。我在x64操作系统上使用它并在Visual Studio 2012(32位)上进行开发时遇到了问题。其中一些可以在vs上找到@ LLVM链接器错误。我遇到的另一个工具是ANTLR
,如果我理解正确的话,那么最新版本还不容易集成到C++
中。许多参考资料都是相同的,但一个快速的可以@ ANTLR与c++集成的问题。另外,我不想丢弃用flex和bison编写的词法分析器和解析器。如果我想从AST生成字节码,我有哪些选项?
EDIT:我的目标是从AST(针对目标体系结构)生成字节码,以便代码可以在虚拟机级别执行。目前我有一个解释器,它解释(执行AST)基于c++库并生成字节码。我想直接从AST生成字节码,并在其字节码中执行AST。
直接从AST生成本地字节码是不可能的(实际上是可以的,但这将是极其困难)。您需要某种中间步骤,例如发出LLVM
字节码或您选择的某种编程语言的代码。请注意,LLVM
字节码与本机目标机字节码不同。LLVM
字节码必须被编译为目标机器的本机二进制文件,这是由各自的前端完成的。因此,您也可以使用遍历语法树的手写代码发射器从AST生成c++代码。然后使用目标平台的c++编译器将其编译为所需的本机二进制文件。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 在UNIX系统中使用DIR查找文件的字节大小
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 计算每个节点的树高,帮助我解释这个代码解决方案
- std::当在256字节边界上写入整数时,流的奇怪行为
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 当比特(而不是字节)的顺序至关重要时的持久性
- visual c++,如何获取解决方案目录中的代码
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 如何在文件中查找字节序列
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 字节到位运算符重载C++
- 在java中读取c++字节的位字段
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- C++Matching Brackets 2解决方案不起作用
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- c++的LLVM替代方案(字节码生成)