# VM Implementation We have 8 segments: - `argument` - `local` - `this/that` - `pointer` - `static` (shared) - `constant` (shared) - `temp` (shared) RAM Address | Usage ------------|------------------ 0-15 | Virtual Registers 16-255 | Static Variables (shared) 256-2047 | Stack 2048-16384 | Heap 16384-24575 | Memory mapped I/O Register | Name | Usage ----------|--------|------ `RAM[0]` | `SP` | Stack Pointer `RAM[1]` | `LCL` | `local` `RAM[1]` | `ARG` | `argument` `RAM[3]` | `THIS` | `this` `RAM[4]` | `THAT` | `that` RAM[5-12] | `temp` Segment RAM[13-15]| General Purpose Registers