@@ -19,91 +19,91 @@ _**TL;DR:** How large is a pointer on 64-bit systems – and how small can it pr
1919
2020##### type 1: normal reference, 1 byte granularity, 256 TiB address space
2121
22- <div class =" diagram " >
22+ <pre class =" diagram " >
2323 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
2424 | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ |
2525 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
2626 ╰──────────────┬──────────────╯ ╰──────────────────────────────┬──────────────────────────────────────────────────────────────╯
2727 bits 63 to 48 (16 bits): unused bits 47 to 0 (48 bits): address
2828
29- </div >
29+ </pre >
3030
3131<small >→ 48 bits address, 16 "free" bits</small >
3232
3333##### type 2: normal reference, 8 byte granularity, 128 TiB address space
3434
35- <div class =" diagram " >
35+ <pre class =" diagram " >
3636 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
3737 | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ |
3838 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
3939 ╰──────────────┬────────────────╯ ╰──────────────────────────────┬──────────────────────────────────────────────────────╯ ╰─┬─╯
4040 bits 63 to 47 (17 bits): unused bits 46 to 3 (44 bits): address bits 2 to 0 (3 bits): unused
4141
42- </div >
42+ </pre >
4343
4444<small >→ 44 bits address, 20 "free" bits</small >
4545
4646##### type 3: normal reference, 8 byte granularity, 8 TiB address space
4747
48- <div class =" diagram " >
48+ <pre class =" diagram " >
4949 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
5050 | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ |
5151 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
5252 ╰──────────────┬────────────────────────╯ ╰──────────────────────┬──────────────────────────────────────────────────────╯ ╰─┬─╯
5353 bits 63 to 43 (21 bits): unused bits 42 to 3 (40 bits): address bits 2 to 0 (3 bits): unused
5454
55- </div >
55+ </pre >
5656
5757<small >→ 40 bits address, 24 "free" bits</small >
5858
5959##### type 4: normal reference, 8 byte granularity, 512 GiB address space
6060
61- <div class =" diagram " >
61+ <pre class =" diagram " >
6262 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
6363 | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ |
6464 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
6565 ╰──────────────┬────────────────────────────────╯ ╰──────────────┬──────────────────────────────────────────────────────╯ ╰─┬─╯
6666 bits 63 to 39 (25 bits): unused bits 38 to 3 (36 bits): address bits 2 to 0 (3 bits): unused
6767
68- </div >
68+ </pre >
6969
7070<small >→ 36 bits address, 28 "free" bits</small >
7171
7272##### type 5: vtable/type/class reference, 128 byte granularity, 128 TiB address space
7373
74- <div class =" diagram " >
74+ <pre class =" diagram " >
7575 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
7676 | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ |
7777 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
7878 ╰──────────────┬────────────────╯ ╰──────────────────────────────┬──────────────────────────────────────────────╯ ╰─────┬─────╯
7979 bits 63 to 47 (17 bits): unused bits 46 to 7 (40 bits): address bits 6 to 0 (7 bits): unused
8080
81- </div >
81+ </pre >
8282
8383<small >→ 40 bits address, 24 "free" bits</small >
8484
8585##### type 6: vtable/type/class reference, 128 byte granularity, 512 GiB address space
8686
87- <div class =" diagram " >
87+ <pre class =" diagram " >
8888 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
8989 | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ |
9090 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
9191 ╰──────────────┬────────────────────────────────╯ ╰──────────────┬──────────────────────────────────────────────╯ ╰─────┬─────╯
9292 bits 63 to 39 (25 bits): unused bits 38 to 7 (32 bits): address bits 6 to 0 (7 bits): unused
9393
94- </div >
94+ </pre >
9595
9696<small >→ 32 bits address, 32 "free" bits</small >
9797
9898##### type 7: vtable/type/class reference, 64 byte granularity, 1 GiB address space
9999
100- <div class =" diagram " >
100+ <pre class =" diagram " >
101101 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
102102 | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ | ┊ ┊ ┊ ┊ ┊ ┊ ┊ |
103103 +---------------+---------------+---------------+---------------+---------------+---------------+---------------+---------------+
104104 ╰──────────────┬──────────────────────────────────────────────────╯ ╰──────────┬──────────────────────────────────╯ ╰───┬─────╯
105105 bits 63 to 30 (34 bits): unused bits 29 to 6 (24 bits): address bits 5 to 0 (6 bits): unused
106106
107- </div >
107+ </pre >
108108
109109<small >→ 24 bits address, 40 "free" bits</small >
0 commit comments