Hallo!
Ich suche eine minimale 32 Bit CPU z.B. für fpga Hardware Initialisierungen. Ich habe bereits eine ZPU Implementierung geschrieben, hätte allerdings lieber etwas, dass etwas 'konventioneller' zu programmieren ist (also eher Register als Stackmachine).
Der Focus soll auf einer recht kleinen Anzahl von LEs sein. Da keine umfangreichen Programme laufen sollen, kann der Code auch ruhig etwas länger werden, wenn die CPU dafür etwas einfacher wird.
Nun simuliere ich also, wie etwa eine recht minimale 32 Bit CPU aussehen könnte, die trotzdem halbwegs komfortabel zu programmieren ist. Vielleicht entdeckt eure Schwarmintelligenz ja offensichtliche Dinge, die ich übersehen hab...
Hier mal der aktuelle Stand meines Brainstormings:
==============================
Register
a,b Universalregister 32 bit
s Status 8 bit
sp Stackpointer 32 bit
pc Programmzähler 32 bit
Instruktionen:
1-Register
==========
inc_a inc_b Inkrementiere a bzw b
dec_b dec_b Dekrementiere a bzw b
not_a not_b Negiere
shl_a shl_b Shift left
shr_a shr_b Shift right
rol_a rol_b Rotiere links
ror_a ror_b Rotiere rechts
copy_a_b copy_b_a Kopiere a nach b bzw b nach a
load_a <32-bit adr> load_b <32-bit adr> Lade a bzw b von einer 32 bit Adresse
store_a <32 bit adr> store_b <32 bit adr> Speichere a bzw b in einer 32 bit Adresse
set_a <32 bit value> set_b <32 bit value> Setze a bzw b auf einen 32 bit Wert
push_a push_b Speichere a oder b auf dem Stack
pop_a pop_b Hole a oder b vom Stack
load_a_from_b load_b_from_a Lade den 32 Bit Wert an der Adresse <b> nach a bzw lade den Wert in <a> nach b
2-Register
==========
add_b a = a + b (Sollte man hier auch die andere Richtung b = b + a einbauen?
sub_b a = a - b
and_b a = a & b
or_b a = a | b
xor_b a = a ^ b
Sprung Instruktionen
====================
jmp <32 bit adr>
jpz <32 bit adr>
jnz <32 bit adr>
jsr <32 bit adr>
ret
Sonstiges
=========
brk Stoppe cpu
==============================
Die Mnemonics shl_a hab ich mal so gewählt, weil sie mir einfacher zu parsen scheinen, also ein shl a.
Vielen Dank schonmal für das Lesen meiner Ideen.
Ciao,
Andreas