30 lines
621 B
Markdown
30 lines
621 B
Markdown
|
# 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
|