【问题标题】:C++ - Create function at runtime [duplicate]C ++ - 在运行时创建函数[重复]
【发布时间】:2014-12-03 16:49:28
【问题描述】:

在 C++ 中,我必须对大表​​的每个单元格进行一些用户定义的操作。 由于表格的大小,我不想使用解释指令,而是在运行时编译一个我将在每个单元格上调用的函数。

用户定义的动作非常简单:

if ((state1 && state2) || state3) then change_a_value_in_memory

这就是我不需要使用 LLVM 或其他 JIT 库的原因。

我犹豫是否只使用 mmap 并直接以十六进制添加代码。

我想知道是否存在更好的解决方案,或者如果没有,我在哪里可以找到C++函数代码的基本格式,直接将其写入内存。

谢谢,对不起我的英语:/

【问题讨论】:

  • C++通常既不解释也不及时编译。如果你是,你可能想添加你正在使用的环境。
  • 也许你可以连接一些像 Lua 这样的脚本语言
  • 如果条件真的这么简单,你确定是瓶颈吗?我希望这种操作受 I/O 限制。
  • 我所需要的只是纯粹的速度(表格可以变得非常大),这就是为什么我更喜欢使用函数调用而不是 lua 编译器/处理程序的所有复杂性。代码将像条件 => 结果一样简单。我正在创建一个元胞自动机,该函数将描述自动机的规则,并将在网格的每个单元格上调用。
  • 为什么不为你的“语言”写一个解析器?

标签: c++ jit


【解决方案1】:

这不是最优雅的,但它始终有效:使用函数的 C++ 代码生成文件,使用 system() 调用编译器,使用 dlopen 加载生成的 .so 文件,然后使用函数!

这需要一些时间(由于编译器调用),但如果您保留函数并维护已有函数的数据库,则可以节省编译量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多