diff --git a/026_llvm.md b/026_llvm.md
index 7d09ea1..40c53b9 100644
--- a/026_llvm.md
+++ b/026_llvm.md
@@ -41,14 +41,14 @@ was first developed for the Intel 8086 CPU family. The base types which hardware
operates over are integers and floating point types. Let us just consider the
integral types for now, these come in four major varieties:
-
+![](img/bits.png)
On the Intel architecture numbers are represented *little endian* meaning lower
significant bytes are stored in lower memory addresses. The whole memory
representation for a value is partitioned into *high bits* and *low bits*. For
example the hexadecimal number ``0xc0ffee`` as a DWORD is stored in memory as:
-
+![](img/coffee.png)
In Haskell unboxed integral machine types are provided by the ``Data.Word``
[module](https://hackage.haskell.org/package/base-4.8.1.0/docs/Data-Word.html).
@@ -109,7 +109,7 @@ Each of these registers can be addressed as a smaller register containing a
subset of the lower bits. The 32-bit register of ``rax`` is ``eax``. These are
shown in the table below.
-
+![](img/registers.png)
These smaller registers are given specific names with modified prefixes.
@@ -614,7 +614,7 @@ prefix opcode data assembly meaning
Ok, let's look at the full structure of an instruction. It consists of several
parts.
-
+![](img/opcode.png)