mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-04-20 19:16:43 +00:00
moving RAM documentation
parent
6ee4568ee0
commit
bdcc0ab379
18
CPU.md
18
CPU.md
@ -10,24 +10,6 @@ _See also_: [Battery Hardware](https://github.com/simon987/Much-Assembly-Require
|
|||||||
|
|
||||||
Work in progress
|
Work in progress
|
||||||
|
|
||||||
|
|
||||||
## Random-access memory
|
|
||||||
|
|
||||||
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 - 0x004F` | Memory used by the [LiDAR](https://github.com/simon987/Much-Assembly-Required/wiki/Hardware:-LiDAR#interrupt-behavior) `GET_PATH` hardware interrupt behavior |
|
|
||||||
| `0x0050` | The execution cost. Is set at the end of the tick. [source](https://github.com/simon987/Much-Assembly-Required/blob/master/Server/src/main/java/net/simon987/server/assembly/CPU.java) |
|
|
||||||
| `0x0051:0x0052` | The number of instructions executed. Is set at the end of the tick. [source](https://github.com/simon987/Much-Assembly-Required/blob/master/Server/src/main/java/net/simon987/server/assembly/CPU.java) |
|
|
||||||
| `0x0053 - 0x00FF` | Not used, but probably not smart to use since it might be reserved for future use cases |
|
|
||||||
| `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
|
## 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.
|
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.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user