在C中运行动态生成的程序集(GNU / Linux)

我正在用C编写一个概念证明JIT编译器,目前它正在生成汇编代码的字符串。 C中的内联汇编功能只处理编译时已知的字符串文字,所以我不能用它来运行我生成的运行时代码。

我已经阅读过有关使用mmap()在运行时执行生成的机器代码的问题,但是如果可能的话,我想避免使用机器代码。

有谁知道任何解决方案? 我曾想过将它写入一个文件并调用所述文件中的汇编器和链接器,但那会很麻烦并且很慢。


我认为最终是“JIT”你需要时间敏感,这意味着生成机器码。 您可以尝试输入一些调试代码,以生成要运行的机器代码和要验证的汇编代码,运行汇编程序将汇编语言中的机器代码与直接生成的机器代码进行比较,然后使用它来调试/验证机器代码(如果可能的话,有时组装者想做自己的事情,而不是你想让他们做的事情)。


我所做的是生成C / C ++ / Fortran代码,实时编译它,将它链接到一个DLL中,并动态加载DLL,所有这些都最多只需几秒钟。 你可以做同样的事情,除了生成ASM。 当您需要速度的结果代码时,这是一种非常有效的技术,以及您所生成语言的代码(和运行时库)的灵活性。

链接地址: http://www.djcxy.com/p/73517.html

上一篇: Run dynamically generated assembly in C (GNU/Linux)

下一篇: Using Azure Notification Hub with Phonegap