8.3 KiB
8.3 KiB
Especificaciones
Arquitectura: 16bit Tamaño de instruccion: 16bit PROM: Ilimitado RAM: 1kB - 20kB STACK: 256 - Ilimitado
Registros
Cada registro puede almacenar 16 bits
| ADDR | NAME | NOTES |
|---|---|---|
| 0x00 | REG0 | |
| 0x01 | REG1 | |
| 0x02 | REG2 | |
| 0x03 | REG3 | |
| 0x04 | REG4 | |
| 0x05 | REG5 | |
| 0x06 | REG6 | |
| 0x07 | REG7 | |
| 0x08 | REG8 | |
| 0x09 | REG9 | |
| 0x0A | REG10 | |
| 0x0B | REG11 | |
| 0x0C | REG12 | RAM VALUE |
| 0x0D | REG13 | RAM ADDR |
| 0x0E | PC | |
| 0x0F | IN/OUT |
Opcodes
Las instrucciones en este CPU tienen un tamaño total de 8 bytes, es decir, 4 parametros de 16bit cada uno.
[OPCODE] [PARAM1] [PARAM2] [TARGET1]
PARAM1 y PARAM2 soportan 2 modos de direccionamiento:
- Modo registro
- Modo inmediato
TARGET1 indica el registro donde se guardará el resultado.
ALU
| OPCODE | ADDR | PARAM1 | PARAM2 | TARGET1 | DESCRIPTION |
|---|---|---|---|---|---|
| ADD | 0x00 | R0 | R1 | T1 | |
| SUB | 0x01 | R0 | R1 | T1 | |
| MUL | 0x02 | R0 | R1 | T1 | |
| DIV | 0x03 | R0 | R1 | T1 | |
| AND | 0x04 | R0 | R1 | T1 | |
| OR | 0x05 | R0 | R1 | T1 | |
| NOT | 0x06 | R0 | R1 | T1 | |
| NAND | 0x07 | R0 | R1 | T1 | |
| NOR | 0x08 | R0 | R1 | T1 | |
| XOR | 0x09 | R0 | R1 | T1 | |
| XNOR | 0x0A | R0 | R1 | T1 | |
| NEG | 0x0B | R0 | R1 | T1 | |
| - | 0x0C | ||||
| - | 0x0D | ||||
| - | 0x0E | ||||
| - | 0x0F | ||||
| ------ | ---- | ------ | ------ | ------- | ----------- |
| ADD | 0x40 | #0 | R1 | T1 | |
| SUB | 0x41 | #0 | R1 | T1 | |
| MUL | 0x42 | #0 | R1 | T1 | |
| DIV | 0x43 | #0 | R1 | T1 | |
| AND | 0x44 | #0 | R1 | T1 | |
| OR | 0x45 | #0 | R1 | T1 | |
| NOT | 0x46 | #0 | R1 | T1 | |
| NAND | 0x47 | #0 | R1 | T1 | |
| NOR | 0x48 | #0 | R1 | T1 | |
| XOR | 0x49 | #0 | R1 | T1 | |
| XNOR | 0x4A | #0 | R1 | T1 | |
| NEG | 0x4B | #0 | R1 | T1 | |
| - | 0x4C | ||||
| - | 0x4D | ||||
| - | 0x4E | ||||
| - | 0x4F | ||||
| ------ | ---- | ------ | ------ | ------- | ----------- |
| ADD | 0x80 | R0 | #1 | T1 | |
| SUB | 0x81 | R0 | #1 | T1 | |
| MUL | 0x82 | R0 | #1 | T1 | |
| DIV | 0x83 | R0 | #1 | T1 | |
| AND | 0x84 | R0 | #1 | T1 | |
| OR | 0x85 | R0 | #1 | T1 | |
| NOT | 0x86 | R0 | #1 | T1 | |
| NAND | 0x87 | R0 | #1 | T1 | |
| NOR | 0x88 | R0 | #1 | T1 | |
| XOR | 0x89 | R0 | #1 | T1 | |
| XNOR | 0x8A | R0 | #1 | T1 | |
| NEG | 0x8B | R0 | #1 | T1 | |
| - | 0x8C | ||||
| - | 0x8D | ||||
| - | 0x8E | ||||
| - | 0x8F | ||||
| ------ | ---- | ------ | ------ | ------- | ----------- |
| ADD | 0xC0 | #0 | #1 | T1 | |
| SUB | 0xC1 | #0 | #1 | T1 | |
| MUL | 0xC2 | #0 | #1 | T1 | |
| DIV | 0xC3 | #0 | #1 | T1 | |
| AND | 0xC4 | #0 | #1 | T1 | |
| OR | 0xC5 | #0 | #1 | T1 | |
| NOT | 0xC6 | #0 | #1 | T1 | |
| NAND | 0xC7 | #0 | #1 | T1 | |
| NOR | 0xC8 | #0 | #1 | T1 | |
| XOR | 0xC9 | #0 | #1 | T1 | |
| XNOR | 0xCA | #0 | #1 | T1 | |
| NEG | 0xCB | #0 | #1 | T1 | |
| - | 0xCC | ||||
| - | 0xCD | ||||
| - | 0xCE | ||||
| - | 0xCF |
CONDITIONALS
En los condicionales TARGET1 representa a la direccion del PC (Program Counter) que se saltará si se cumple la condicion.
| OPCODE | ADDR | PARAM1 | PARAM2 | TARGET1 | DESCRIPTION |
|---|---|---|---|---|---|
| EQ | 0x10 | R0 | R1 | T1 | equal |
| NEQ | 0x11 | R0 | R1 | T1 | not equal |
| LS | 0x12 | R0 | R1 | T1 | less |
| LSE | 0x13 | R0 | R1 | T1 | less or eq |
| GR | 0x14 | R0 | R1 | T1 | greater |
| GRE | 0x15 | R0 | R1 | T1 | greater or eq |
| 0x16 | R0 | R1 | T1 | ||
| 0x17 | R0 | R1 | T1 | ||
| ------ | ---- | ------ | ------ | ------- | ----------- |
| EQ | 0x50 | #0 | R1 | T1 | equal |
| NEQ | 0x51 | #0 | R1 | T1 | not equal |
| LS | 0x52 | #0 | R1 | T1 | less |
| LSE | 0x53 | #0 | R1 | T1 | less or eq |
| GR | 0x54 | #0 | R1 | T1 | greater |
| GRE | 0x55 | #0 | R1 | T1 | greater or eq |
| 0x56 | #0 | R1 | T1 | ||
| 0x57 | #0 | R1 | T1 | ||
| ------ | ---- | ------ | ------ | ------- | ----------- |
| EQ | 0x90 | R0 | #1 | T1 | equal |
| NEQ | 0x91 | R0 | #1 | T1 | not equal |
| LS | 0x92 | R0 | #1 | T1 | less |
| LSE | 0x93 | R0 | #1 | T1 | less or eq |
| GR | 0x94 | R0 | #1 | T1 | greater |
| GRE | 0x95 | R0 | #1 | T1 | greater or eq |
| 0x96 | R0 | #1 | T1 | ||
| 0x97 | R0 | #1 | T1 | ||
| ------ | ---- | ------ | ------ | ------- | ----------- |
| EQ | 0xD0 | #0 | #1 | T1 | equal |
| NEQ | 0xD1 | #0 | #1 | T1 | not equal |
| LS | 0xD2 | #0 | #1 | T1 | less |
| LSE | 0xD3 | #0 | #1 | T1 | less or eq |
| GR | 0xD4 | #0 | #1 | T1 | greater |
| GRE | 0xD5 | #0 | #1 | T1 | greater or eq |
| 0xD6 | #0 | #1 | T1 | ||
| 0xD7 | #0 | #1 | T1 |
CONTROL UNIT
| OPCODE | ADDR | PARAM1 | PARAM2 | TARGET1 | DESCRIPTION |
|---|---|---|---|---|---|
| RSTR | 0x18 | -- | -- | - | |
| PUSH | 0x19 | R1 | -- | - | |
| POP | 0x1A | -- | -- | T1 | |
| ------ | ---- | ------ | ------ | ------- | ----------- |
| PUSH | 0x59 | #1 | -- | - |
FUNCTIONS
| OPCODE | ADDR | PARAM1 | PARAM2 | TARGET1 | DESCRIPTION |
|---|---|---|---|---|---|
| CALL | 0x20 | R1 | -- | - | |
| RET | 0x21 | -- | -- | - | |
| HALT | 0x22 | -- | -- | - | |
| ------ | ---- | ------ | ------ | ------- | ----------- |
| CALL | 0x60 | #1 | -- | - |