Krolyxon
Commit 4667df1

Branches

Tags

Refs →

bench51README.md

59 lines · 1.6 KB · Markdown

1# 8-Bit CPU Emulator
2
3## CPU Architecture
4- Word Size
5 - **Data Width:** 8 bits
6 - **Address width:** 16 bits
7 - **Address space:** 64 KB (0x0000-0xFFFF)
8
9## Supported Instructions
10
11| Instruction | Syntax |
12| ----------- | ---------------- |
13| MOV | mov dest, src OR mov reg, imm |
14| ADD | add r1, r2 OR add reg, imm |
15| SUB | sub r1, r2 OR sub reg, imm |
16| JMP | jmp addr OR jmp addr |
17| JZ | jz addr OR jz addr |
18| JNZ | jnz addr OR jnz addr |
19| CMP | cmp r1, r2 OR cmp reg, imp |
20| MUL | mul r1, r2 |
21| DIV | div r1, r2 |
22| CALL | call \<label\> |
23| HLT (Halt) | hlt |
24
25
26## Registers
27| Register | Size | Description |
28| -------- | ------ | ------------------------------ |
29| A | 8-bit | General |
30| B | 8-bit | General |
31| C | 8-bit | General |
32| D | 8-bit | General |
33| PC | 16-bit | Program Counter |
34| SP | 16-bit | Stack pointer |
35
36## Flags
37| Flag | Description |
38| ----- | ------------ |
39| Z | Zero Flag |
40| C | Carry/Borrow |
41
42
43# Usage
44```bash
45cargo run -- --f <examples/filename.asc>
46```
47
48## Todo
49- [x] Assembler
50 - [x] Lexer/Tokenizer
51 - [x] Add label support (supporting JMP/JZ/JNZ)
52- [ ] Add instructions
53 - [x] CMP
54 - [x] MUL
55 - [x] DIV
56 - [x] CALL
57 - [x] RET
58- [ ] Error handling
59- [ ] Build Debugger