Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Building a Virtual Machine
Part 1: VM basic operations
Lecture 1: Introduction to Virtual Machines (19:22)
Lecture 2: Stack-based vs. Register-based VMs (9:36)
Lecture 3: Logger implementation (4:00)
Lecture 4: Numbers: introduction to Stack (8:00)
Lecture 5: Math binary operations (7:07)
Lecture 6: Strings: introduction to Heap and objects (6:39)
Lecture 7: Syntax: parser implementation (9:20)
Lecture 8: Compiler | Bytecode (9:13)
Lecture 9: Complex expressions (5:26)
Part 2: Control flow and variables
Lecture 10: Comparison | Booleans (5:18)
Lecture 11: Control flow | Branch instruction (8:18)
Lecture 12: Disassembler (8:45)
Lecture 13: Global variables (11:07)
Lecture 14: Blocks | Local variables (14:39)
Lecture 15: Control flow | While-loops (3:34)
Part 3.1: Functions and Call stack
Lecture 16: Native functions | Function calls (7:52)
Lecture 17: User-defined functions (12:07)
Lecture 18: Call stack | Return address (6:37)
Lecture 19: Lambda functions (5:27)
Lecture 20: Bytecode optimizations (5:31)
Part 3.2: Closures implementation
Lecture 21: Closures | Scope analysis (17:55)
Lecture 22: Closures | Compilation (9:31)
Lecture 23: Closures | Runtime (12:23)
Part 4: Garbage Collection
Lecture 24: Tracing heap | Object header (11:00)
Lecture 25: Mark-Sweep GC (15:03)
Part 5: Object-oriented programming
Lecture 26: Class objects | Methods storage (13:23)
Lecture 27: Instance objects | Property access (10:57)
Lecture 28: Super classes | Inheritance (2:13)
Lecture 29: Final VM executable (6:14)
Lecture 20: Bytecode optimizations
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock