The document discusses the author's seven years of experience working on VM engineering projects. It describes some typical projects including work on 64-bit support, image formats, serialization, floating point numbers, garbage collection, and interfacing with C/hardware. Over time, the VM codebase grew substantially but efforts were made to reduce code bloat and improve garbage collection performance. The author advocates focusing on high quality, well-designed code over large quantities of code.
9. Serialization image
do something
about 64 bits
ImageWriter
FFI, types
format
32 vs 64
bits
10. Serialization image
do something
about 64 bits
ImageWriter
FFI, types
format
platform
specs
32 vs 64
bits
11. Serialization
do something
about 64 bits
ImageWriter
FFI, types
SmallInteger
image
format
platform
specs
32 vs 64
bits
12. Serialization
do something
about 64 bits
ImageWriter
FFI, types
SmallInteger
image
format
platform
specs
32 vs 64
bits
x86 code
generators
13. Serialization
do something
about 64 bits
ImageWriter
FFI, types
SmallInteger
image
format
platform
specs
32 vs 64
bits
x86 code
generators
x86 specs
14. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
Floating point
image
format
platform
specs
32 vs 64
bits
x86 code
generators
x86 specs
15. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
x86 specs
Floating point
image
format
platform
specs
32 vs 64
bits
x86 code
generators
IEEE-754
16. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
x86 specs
IEEE-754
Floating point
image
format
platform
specs
32 vs 64
bits
x86 code
generators
FPU specs
17. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
x86 specs
IEEE-754
Floating point
image
format
platform
specs
32 vs 64
bits
x86 code
generators
SmallDouble
FPU specs
18. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
IEEE-754
Floating point
image
format
platform
specs
32 vs 64
bits
x86 code
generators
SmallDouble
FPU specs
32 bit bugs
x86 specs
19. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
IEEE-754
Floating point
image
format
platform
specs
prim
returns
32 vs 64
bits
x86 code
generators
SmallDouble
FPU specs
32 bit bugs
x86 specs
20. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
IEEE-754
Floating point
prim
returns pointer
aliasing
image
format
platform
specs
32 vs 64
bits
x86 code
generators
SmallDouble
FPU specs
32 bit bugs
x86 specs
21. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
Floating point
prim
returns pointer
aliasing
image
format
platform
specs
32 vs 64
bits
x86 code
generators
FPU specs
C99
compiler
manuals
IEEE-754
SmallDouble
32 bit bugs
x86 specs
22. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
Floating point
prim
returns pointer
aliasing
image
format
platform
specs
32 vs 64
bits
x86 code
generators
FPU specs
C99
compiler
manuals
IEEE-754
SmallDouble
32 bit bugs SIGSEGV
x86 specs
23. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
Floating point
32 bit bugs C compilers
prim
returns pointer
aliasing
image
format
platform
specs
32 vs 64
bits
x86 code
generators
FPU specs
C99
compiler
manuals
IEEE-754
SmallDouble
SIGSEGV
x86 specs
24. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
Floating point
prim
returns pointer
aliasing
image
format
platform
specs
32 vs 64
bits
x86 code
generators
FPU specs
C99
compiler
manuals
IEEE-754
SmallDouble
SIGSEGV
C compilers
ABI violations
32 bit bugs
x86 specs
25. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
Floating point
prim
returns pointer
aliasing
Garbage Collectors
image
format
platform
specs
32 vs 64
bits
x86 code
generators
FPU specs
C99
compiler
manuals
IEEE-754
SmallDouble
SIGSEGV
C compilers
ABI violations
32 bit bugs
x86 specs
26. Serialization
SmallInteger
do something
about 64 bits
ImageWriter
FFI, types
Floating point
prim
returns pointer
aliasing
Garbage Collectors
image
format
platform
specs
32 vs 64
bits
x86 code
generators
FPU specs
C99
compiler
manuals
IEEE-754
SmallDouble
SIGSEGV
C compilers
ABI violations
32 bit bugs
x86 specs
35. ... problems...
Image <primitive: 123>
C
Hardware
<foo.dll bar( )>
prim123( ) {...} FFI
OS, C libraries
... and rax, 3h...
VM
36. ... problems...
Image <primitive: 123>
C
Hardware
<foo.dll bar( )>
prim123( ) {...} FFI
OS, C libraries
... and rax, 3h...
VM
UD
37. ... problems...
Image <primitive: 123>
C
sigevent_t
Hardware
<foo.dll bar( )>
prim123( ) {...} FFI
OS, C libraries
... and rax, 3h...
VM
UD
38. ... problems...
Image <primitive: 123>
C
sigevent_t
Hardware
<foo.dll bar( )>
prim123( ) {...} FFI
OS, C libraries
... and rax, 3h...
VM
UD
port
39. ... problems...
Image <primitive: 123>
C
sigevent_t macros, GetLastError()
Hardware
<foo.dll bar( )>
prim123( ) {...} FFI
OS, C libraries
... and rax, 3h...
VM
UD
port