aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/2022-07-07-llvm-orc-jit.md
diff options
context:
space:
mode:
authorJohannes Stoelp <johannes.stoelp@gmail.com>2022-11-05 23:24:05 +0100
committerJohannes Stoelp <johannes.stoelp@gmail.com>2022-11-05 23:24:05 +0100
commitb14fce113fa45da85c8c3528552ae446ced340ca (patch)
tree5e7a68d113f8b4e3649a2c9cbcd5cd85442d0052 /content/2022-07-07-llvm-orc-jit.md
parentcfaa38627b3d315d47ddad295962fe0c92d74b84 (diff)
downloadblog-b14fce113fa45da85c8c3528552ae446ced340ca.tar.gz
blog-b14fce113fa45da85c8c3528552ae446ced340ca.zip
llvm: small ORCv2 jit example
Diffstat (limited to 'content/2022-07-07-llvm-orc-jit.md')
-rw-r--r--content/2022-07-07-llvm-orc-jit.md42
1 files changed, 42 insertions, 0 deletions
diff --git a/content/2022-07-07-llvm-orc-jit.md b/content/2022-07-07-llvm-orc-jit.md
new file mode 100644
index 0000000..3ed8885
--- /dev/null
+++ b/content/2022-07-07-llvm-orc-jit.md
@@ -0,0 +1,42 @@
++++
+title = "Jit C in memory using LLVM ORC api"
+
+[taxonomies]
+tags = ["llvm", "clang", "c++"]
++++
+
+Based on the in-memory compiler shared in the last post ([C to LLVM IR in
+memory using libclang](@/2022-06-18-libclang-c-to-llvm-ir.md)), this post
+demonstrates a small *just in time (JIT)* compiler which allows to compile C
+code to host native code in-memory.
+
+The JIT compiler is based on the LLVM [ORCv2 API][llvm-orc2] (the newest LLVM
+JIT API at the time of writing) and the crucial parts are taken from the [JIT
+tutorial][llvm-jit-tut].
+
+The sources are available under [llvm-orc-jit][post-src].
+
+### main.cc
+```cpp
+{{ include(path="content/2022-07-07-llvm-orc-jit/main.cc") }}
+```
+
+### jit.h
+```cpp
+{{ include(path="content/2022-07-07-llvm-orc-jit/jit.h") }}
+```
+
+### compiler.h
+```cpp
+{{ include(path="content/2022-07-07-llvm-orc-jit/ccompiler.h") }}
+```
+
+### Makefile
+```make
+{{ include(path="content/2022-07-07-llvm-orc-jit/Makefile") }}
+```
+[post-src]: https://git.memzero.de/johannst/blog/src/branch/main/content/2022-07-07-llvm-orc-jit
+[src-clang]: https://github.com/llvm/llvm-project/tree/main/clang
+[blog-clang-in-memory]: https://blog.audio-tk.com/2018/09/18/compiling-c-code-in-memory-with-clang/
+[llvm-jit-tut]: https://www.llvm.org/docs/tutorial/BuildingAJIT1.html
+[llvm-orc2]: https://www.llvm.org/docs/ORCv2.html