diff --git a/CPU.md b/CPU.md index e23b363..02dcf67 100644 --- a/CPU.md +++ b/CPU.md @@ -15,6 +15,15 @@ Work in progress From a storage point of view, the CPU memory spaces are organized as identical arrays of 16-bit words. The CPU has access to its full address space: 65536 (0x10000) words of memory (total 128KB). By default, the stack base is at address 0xFFFF and grows towards lower addresses. +The memory represented in a table would look like this: + +| Address | Description | +| ------- | ----------- | +| `0x0000 - 0x00FF` | Memory used by the [LiDAR](https://github.com/simon987/Much-Assembly-Required/wiki/Hardware:-LiDAR#interrupt-behavior) `GET_PATH` hardware interrupt behavior | +| `0x0100 - 0x01FF` | Memory used by the [LiDAR](https://github.com/simon987/Much-Assembly-Required/wiki/Hardware:-LiDAR#interrupt-behavior) `GET_MAP` hardware interrupt behavior | +| `0x0200 - 0x0200 + PROGRAM_SIZE` | The instructions that make up your program | +| `...`| Not assigned to anything | +| `0x.... - 0xFFFF` | The start of your stack, pointed to by the BP Register at the start of your program. This grows towards `0x0000` | ## General purpose registers The registers are 16-bits locations available to the CPU and are used in some instructions and system calls. Read [Basic Assembly Tutorial](https://github.com/simon987/Much-Assembly-Required/wiki/Basic-Assembly-tutorial) for more information.