@@ -41,14 +41,14 @@ was first developed for the Intel 8086 CPU family. The base types which hardware
41
41
operates over are integers and floating point types. Let us just consider the
42
42
integral types for now, these come in four major varieties:
43
43
44
- < img src = " /images/ bits.png" ></ img >
44
+ ![ ] ( img/ bits.png )
45
45
46
46
On the Intel architecture numbers are represented * little endian* meaning lower
47
47
significant bytes are stored in lower memory addresses. The whole memory
48
48
representation for a value is partitioned into * high bits* and * low bits* . For
49
49
example the hexadecimal number `` 0xc0ffee `` as a DWORD is stored in memory as:
50
50
51
- < img src = " /images/ coffee.png" ></ img >
51
+ ![ ] ( img/ coffee.png )
52
52
53
53
In Haskell unboxed integral machine types are provided by the `` Data.Word ``
54
54
[ 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
109
109
subset of the lower bits. The 32-bit register of `` rax `` is `` eax `` . These are
110
110
shown in the table below.
111
111
112
- < img src = " /images/ registers.png" ></ img >
112
+ ![ ] ( img/ registers.png )
113
113
114
114
These smaller registers are given specific names with modified prefixes.
115
115
@@ -614,7 +614,7 @@ prefix opcode data assembly meaning
614
614
Ok, let's look at the full structure of an instruction. It consists of several
615
615
parts.
616
616
617
- < img src = " /images/ opcode.png" width = 100% ></ img >
617
+ ![ ] ( img/ opcode.png )
618
618
619
619
<!--
620
620
- Prefix
@@ -648,7 +648,7 @@ Prefix Opcode Mod R/M Scale Index Base Displacement Immediate
648
648
649
649
** Prefix**
650
650
651
- < img src = " /images/ Prefix.png" ></ img >
651
+ ![ ] ( img/ Prefix.png )
652
652
653
653
The header fixes the first four bits to be constant `` 0b0100 `` while the next
654
654
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
673
673
674
674
** ModR/M byte**
675
675
676
- < img src = " /images/ ModRM.png" ></ img >
676
+ ![ ] ( img/ ModRM.png )
677
677
678
678
The Mod-Reg-R/M byte determines the instruction's operands and the addressing
679
679
modes. These are several variants of addressing modes.
@@ -744,7 +744,7 @@ ModRM = 0b11000011
744
744
ModRM = 0xc3
745
745
```
746
746
747
- < img src = " /images/ ModRM_example.png" ></ img >
747
+ ![ ] ( img/ ModRM_example.png )
748
748
749
749
<hr />
750
750
0 commit comments