Braindumbed
Braindumbed is esoteric instruction set architecture designed by User:Filexor.
Language overview
Braindumbed generally runs with 65536 bits of address space with memory mapped I/O. Braindumbed has following registers:
name | meaning | description |
---|---|---|
C | Compute | 1 bit long register. |
D | Data | A register indexed by I. Generally 16 bits long. |
I | Index | A register used for indexing D. Can represent any position of D (and so generally 4 bits long). |
A | Address | A register for specifying memory address. Has same length as D. |
P | Program Counter | A program counter points next address of instruction. Has same length as D. |
Braindumbed has following instructions:
symbol | code | operation | Description |
---|---|---|---|
a | 001 | C=!(C&D[I]) | D[I] is I-th bit of D (Starts from 0). |
b | 010 | I++ | |
c | 011 | T=D;D=A;A=T | T is temporal register. |
d | 100 | if(C==0){T=A;A=P;P=T} | T is temporal register. |
e | 101 | C=$A | $A is a memory where A specifies. |
f | 110 | $A=C | $A is a memory where A specifies. |
g | 000 | NOP | NOP does nothing. |
h | 111 | D[I]=C | D[I] is I-th bit of D (Starts from 0). |
Examples
Note: These codes destroy part of D.
NOT
ha
Load 1 to C
haa
Load 0 to C
haaha
From following, b(n) represents repeat b n-times. And I represents initial state of I.
Move D[I] to C
D[J] will be destroyed.
b(J-I)haab(I-J)ab(J-I)ha
AND
D[J] will be destroyed.
ab(J-I)ha
OR
D[J] and D[K] will be destroyed.
b(J-I)hah b(K-J)haab(I-K)ab(K-I)ha b(I-K)ab(J-I)a
Half-adder or XOR
D[K] and D[L] will be destroyed. D[M]=D[I]&D[J] (carry)
b(K-I)haab(I-K)ab(K-I)ha b(J-K)ab(K-J)h b(I-K)ab(L-I)h b(M-L)haab(K-M)ab(M-K)ha b(J-M)ab(L-J)a
Usability
Because of code inefficiently (Just loading 16-bit data take more than 30720-bit of ROM), with default configuration, this ISA can be considered as unusable for programming. However, with larger register size, this ISA may be usable for programming (need verification).