Source: /cirosantilli/llvm-ir-hello-world

= LLVM IR hello world

Example: \a[llvm/hello.ll] adapted from: https://llvm.org/docs/LangRef.html\#module-structure but without double newline.

To execute it as mentioned at https://github.com/dfellis/llvm-hello-world[] we can either use their crazy assembly interpreter, tested on <Ubuntu 22.10>:
``
sudo apt install llvm-runtime
lli hello.ll
``
This seems to use `puts` from the <C standard library>.

Or we can <Lower (compilation)> it to <assembly> of the local machine:
``
sudo apt install llvm
llc hello.ll
``
which produces:
``
hello.s
``
and then we can assemble link and run with <gcc>:
``
gcc -o hello.out hello.s -no-pie
./hello.out
``
or with <clang>:
``
clang -o hello.out hello.s -no-pie
./hello.out
``
`hello.s` uses the <GNU GAS> format, which <clang> is highly compatible with, so both should work in general.