C ++ - 在运行时创建函数

时间:2014-10-08 21:34:50

标签: c++ jit

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

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

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

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

我毫不犹豫地使用mmap并直接在十六进制中添加代码。

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

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

1 个答案:

答案 0 :(得分:1)

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

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