【发布时间】:2020-12-29 10:50:44
【问题描述】:
我希望在跨平台的面向用户的应用程序中进行一些实时数据处理,我需要对动态生成的代码进行某种即时或即时编译来获得我需要的性能。我想使用同一个库为裸机微控制器生成代码,但微控制器不需要 JIT 任何东西。可嵌入动态代码执行的最佳解决方案是什么?
- 我查看了嵌入 Clang+LLVM 并即时编译生成的 C 代码,但无法让 Clang 从内存中编译 C。
- 通过wasmer 的WebAssembly 比LLVM 更容易使用,但我相信它需要系统库和可执行内存。
- 我将其嵌入到 C++ 中,但嵌入式编译器可以使用任何具有 C API 的语言编写。
- 性能很重要。我希望在不占用桌面 CPU 时间超过 ~10% 的情况下进行实时处理,并且显然不会使我的微控制器过载。
- 如果需要,我可以选择可以运行嵌入式 Linux 的微控制器,只要它几乎可以立即启动。
【问题讨论】:
-
如果是微控制器,它不会运行 linux。不完全/真的。
-
我认为你混淆了 clang/llvm 开始做什么以及它真正能做什么。
-
有一些成熟的 Lisp-2 实现可以动态编译到目标汇编器。也许这会满足您的要求。
-
动态生成代码以实时编译,比通过一组预编译、优化的算法进行预编译或 if-then-elsing 的未完美优化代码要慢。除非您大量重用动态生成的代码,否则一代会大量使用这一代,这使得它不是动态的。
-
我需要生成一个函数并在紧密循环中运行数千百万次。缓慢的编译时间是可以接受的。
标签: embedded llvm code-generation jit webassembly