Opcode table - ackerman2001/OpenCDK GitHub Wiki
Data is stored in little-endian format
Opcode | Explanation | Byte length |
---|---|---|
0x00 | mov R[A], b8b7b6b5b4b3b2b1 | 9 |
0x01 | mov R[B], b8b7b6b5b4b3b2b1 | 9 |
0x02 | mov R[C], b8b7b6b5b4b3b2b1 | 9 |
0x03 | mov R[D], b8b7b6b5b4b3b2b1 | 9 |
0x04 | mov R[E], b8b7b6b5b4b3b2b1 | 9 |
0x05 | mov R[F], b8b7b6b5b4b3b2b1 | 9 |
0x06 | mov memory[R[A]], b8b7b6b5b4b3b2b1 | 9 |
0x07 | mov memory[R[B]], b8b7b6b5b4b3b2b1 | 9 |
0x08 | mov memory[R[C]], b8b7b6b5b4b3b2b1 | 9 |
0x09 | mov memory[R[D]], b8b7b6b5b4b3b2b1 | 9 |
0x0A | mov memory[R[E]], b8b7b6b5b4b3b2b1 | 9 |
0x0B | mov memory[R[F]], b8b7b6b5b4b3b2b1 | 9 |
0x0C | inc R[A] | 1 |
0x0D | inc R[b1] | 2 |
0x0E | dec R[A] | 1 |
0x0F | dec R[b1] | 2 |
0x10 | add R[A], R[b1] | 2 |
0x11 | add R[A], b8b7b6b5b4b3b2b1 | 9 |
0x12 | call b8b7b6b5b4b3b2b1 | 9 |
0x13 | call R[A] | 1 |
0x14 | ret | 1 |
0x15 | mul R[A], R[b1] | 2 |
0x16 | skip next instruction if R[b1] == R[b2] | 3 |
0x17 | skip next instruction if R[b1] != R[b2] | 3 |
0x18 | mov R[A], memory[R[B]] | 1 |
0x19 | mov R[b1], R[b2] | 3 |
0x20 | mov memory[R[A]], R[b1] | 2 |
0x21 | mov memory[R[b1]], R[b2] | 3 |
0x22 | jmp b8b7b6b5b4b3b2b1 | 9 |
0xFA | scan decimal from keyboard and put it in R[b1] | 1 |
0xFB | print decimal at memory address R[b1] | 2 |
0xFC | Create a window (width, height) = (b4b3b2b1, b8b7b6b5) with title from address R[A] in the memory(terminated by 0-byte) | 9 |
0xFD | scan string from keyboard and put it into memory at address R[A] | 1 |
0xFE | print string from address R[A] in the memory. It's terminated by 0-byte | 1 |
0xFF | terminate program | 1 |