【发布时间】:2023-09-18 12:02:01
【问题描述】:
我正在用 C 编写一个概念验证 JIT 编译器,目前它正在生成汇编代码字符串。 C 中的内联汇编功能仅处理在编译时已知的字符串文字,因此我不能使用它来运行我在运行时生成的代码。
我已经阅读了有关使用 mmap() 在运行时执行生成的机器代码的信息,但我想尽可能避免使用机器代码。
有人知道任何解决方案吗?我曾想过将其写入文件并在所述文件上调用汇编器和链接器,但这会很麻烦而且很慢。
【问题讨论】:
-
所以你是说你生成汇编源代码?为什么不自己生成机器码?
-
@DrewMcGowen 我不希望这样做,因为它的可读性较差,更难测试,而且时间至关重要,所以如果我想尽可能避免重构。虽然看起来我可能不得不这样做。
-
有很多库可以用来发布程序集。 gnu-lightningllvm, ...
标签: c assembly compiler-construction jit machine-code