Skip to content

Commit d8deca4

Browse files
committed
added jit compiler images
1 parent 4acb416 commit d8deca4

9 files changed

+7
-7
lines changed

026_llvm.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ was first developed for the Intel 8086 CPU family. The base types which hardware
4141
operates over are integers and floating point types. Let us just consider the
4242
integral types for now, these come in four major varieties:
4343

44-
<img src="/images/bits.png"></img>
44+
![](img/bits.png)
4545

4646
On the Intel architecture numbers are represented *little endian* meaning lower
4747
significant bytes are stored in lower memory addresses. The whole memory
4848
representation for a value is partitioned into *high bits* and *low bits*. For
4949
example the hexadecimal number ``0xc0ffee`` as a DWORD is stored in memory as:
5050

51-
<img src="/images/coffee.png"></img>
51+
![](img/coffee.png)
5252

5353
In Haskell unboxed integral machine types are provided by the ``Data.Word``
5454
[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
109109
subset of the lower bits. The 32-bit register of ``rax`` is ``eax``. These are
110110
shown in the table below.
111111

112-
<img src="/images/registers.png"></img>
112+
![](img/registers.png)
113113

114114
These smaller registers are given specific names with modified prefixes.
115115

@@ -614,7 +614,7 @@ prefix opcode data assembly meaning
614614
Ok, let's look at the full structure of an instruction. It consists of several
615615
parts.
616616

617-
<img src="/images/opcode.png" width=100%></img>
617+
![](img/opcode.png)
618618

619619
<!--
620620
- Prefix
@@ -648,7 +648,7 @@ Prefix Opcode Mod R/M Scale Index Base Displacement Immediate
648648

649649
**Prefix**
650650

651-
<img src="/images/Prefix.png"></img>
651+
![](img/Prefix.png)
652652

653653
The header fixes the first four bits to be constant ``0b0100`` while the next
654654
four bits indicate the pretense of W/R/X/B extensions.
@@ -673,7 +673,7 @@ The W bit modifies the operation width. The R, X and B fields extend the registe
673673

674674
**ModR/M byte**
675675

676-
<img src="/images/ModRM.png"></img>
676+
![](img/ModRM.png)
677677

678678
The Mod-Reg-R/M byte determines the instruction's operands and the addressing
679679
modes. These are several variants of addressing modes.
@@ -744,7 +744,7 @@ ModRM = 0b11000011
744744
ModRM = 0xc3
745745
```
746746

747-
<img src="/images/ModRM_example.png"></img>
747+
![](img/ModRM_example.png)
748748

749749
<hr/>
750750

img/ModRM.png

2.15 KB
Loading

img/ModRM_example.png

3.38 KB
Loading

img/Prefix.png

4.09 KB
Loading

img/Scale.png

2.29 KB
Loading

img/bits.png

9.94 KB
Loading

img/coffee.png

3.26 KB
Loading

img/opcode.png

23.3 KB
Loading

img/registers.png

3.12 KB
Loading

0 commit comments

Comments
 (0)