【问题标题】:Most portable library for dynamic code generation?用于动态代码生成的最可移植库?
【发布时间】:2010-11-27 16:14:11
【问题描述】:

我正在寻找最便携的汇编程序库,例如 asmjitjitasm

当我说“最便携”时,我的意思是它对各种架构的支持最多。语言并不重要,但 C++ 将是最好的解决方案,尤其是与 GCC 结合使用时。

对我来说重要的架构是 x86/64、PowerPC 和 ARM。

【问题讨论】:

    标签: c++ assembly code-generation cpu-architecture machine-code


    【解决方案1】:

    DynASM,由 LuaJIT 使用,支持 x86、x64、ARM、MIPS 和 PowerPC。

    【讨论】:

      【解决方案2】:

      经过广泛的搜索和研究,我发现 LLVM 是最好的 JIT 库。它们都只支持 x86/x86_64,LLVM 是唯一一个支持 x86/x86_64 PPC/PPC64 的。

      所以我在此宣布它是最便携的... 如果有人找到更好的,请 - 哦,请分享。

      【讨论】:

      • 它曾经是,但由于一般的 JIT 目的,成功扼杀了它。现在它太胖了,太复杂了,而且太依赖于包括 C++ 在内的静态语言
      【解决方案3】:

      GNU 为您提供libjitHighly portable 到您选择的架构,有据可查并提供 C++ 接口。作为 GCC 你的编译器,我想不出更好的报价。

      【讨论】:

        【解决方案4】:

        您可能会觉得NanoJit 很有趣。它比 LLVM 更轻巧,尽管文档很少(有一个很好的教程here...就是这样)。支持的架构:

        • x86
        • x64
        • ARM
        • MIPS
        • PowerPC

        【讨论】:

          【解决方案5】:

          “x86/64、PowerPC 和 ARM”不是一个非常广泛的体系结构。许多开源 VM 应该支持该集合,包括 Mono。你想用它做什么?

          Mono 的 supported platforms 用于 JIT 包括(此处的部分列表 - 链接中的完整列表):

          • X86
          • X86-64
          • IA64(安腾)
          • 电源电脑
          • ARM
          • MIPS
          • 阿尔法

          【讨论】:

          • jitasm 将让您动态生成 asm 代码,并可选择执行它。 Mono 将离线编译代码。不是我想要的。
          • Mono 将 C# 预编译为 IL 并即时对 IL 进行 JIT。
          • 那么我必须编写一个可编译为 IL 的包装器。效率不高,与我的要求相差甚远。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-08
          • 2012-01-27
          相关资源
          最近更新 更多