我如何跨操作系统和裸机将代码 JIT 编译为 运行?
How can I JIT compile code to run across OSes and for bare metal?
我希望在跨平台的面向用户的应用程序中进行一些实时数据处理,我需要对动态生成的代码进行某种即时或提前编译,以便获得我需要的性能。我想使用相同的库为裸机微控制器生成代码,但微控制器不需要 JIT 任何东西。可嵌入动态代码执行的最佳解决方案是什么?
- 我看过嵌入 Clang+LLVM 并即时编译生成的 C 代码,但无法让 Clang 从内存中编译 C。
- 通过 wasmer 使用 WebAssembly 比 LLVM 更容易使用,但我认为它需要系统库和可执行内存。
- 我将它嵌入到 C++ 中,但是嵌入式编译器可以用任何带有 C 的语言编写 API。
- 性能很重要。我想在不超过 ~10% CPU 桌面时间的情况下进行实时处理,并且显然不会使我的微控制器超载。
- 如果需要,我可以选择可以 运行 嵌入 Linux 的微控制器,前提是它几乎可以立即启动。
我认为使用 C++ API 生成和 运行 LLVM IR 将是最佳解决方案,除非提供其他选项。虽然代码生成可能是low-level,但它支持所有相关平台,可以交叉编译,性能卓越。
我希望在跨平台的面向用户的应用程序中进行一些实时数据处理,我需要对动态生成的代码进行某种即时或提前编译,以便获得我需要的性能。我想使用相同的库为裸机微控制器生成代码,但微控制器不需要 JIT 任何东西。可嵌入动态代码执行的最佳解决方案是什么?
- 我看过嵌入 Clang+LLVM 并即时编译生成的 C 代码,但无法让 Clang 从内存中编译 C。
- 通过 wasmer 使用 WebAssembly 比 LLVM 更容易使用,但我认为它需要系统库和可执行内存。
- 我将它嵌入到 C++ 中,但是嵌入式编译器可以用任何带有 C 的语言编写 API。
- 性能很重要。我想在不超过 ~10% CPU 桌面时间的情况下进行实时处理,并且显然不会使我的微控制器超载。
- 如果需要,我可以选择可以 运行 嵌入 Linux 的微控制器,前提是它几乎可以立即启动。
我认为使用 C++ API 生成和 运行 LLVM IR 将是最佳解决方案,除非提供其他选项。虽然代码生成可能是low-level,但它支持所有相关平台,可以交叉编译,性能卓越。