Hallo Neo,
meine Frage ist: Wie interpretiert/versteht ein
Mikrocontroller/Prozessor nur zum beispiel den MOV oder ADD
Befehl?! Es wird ja nur binärcode verstanden und symbole,
zeichen werden verständlicherweise, damit der
mikrocontroller/Prozessor das versteht, in binärcode
umgewandelt. aber wie interpretiert/versteht ein Prozessor was
mit MOV gemeint ist. D.h. woher soll dieser wissen was mit
„verschieben“ gemeint ist bzw. wie hat man das gelöst.
Also, basteln wir uns mal schnell eine CPU
Registersatz:
PC = Programm-Zähler
SP = Stapelzeiger
A = Register
B = Register
Nun Nummerieren wir die Register durch:
0 = PC
1 = SP
2 = A
3 = B
Dann die Befehle:
0 = MOV RegQuelle, RegZiel
1 = MOV Immidiate, RegZiel
2 = MOV Addr, RegZiel
3 = MOV RegQuelle, Adresse
4 = MOV (Reg), RegZiel ; Register enthält Adresse
5 = MOV RegQuelle, (Reg) ; Register enthält Adresse
Jetzt noch der Aufbau des Opcodes, der soll 8 Bit lang sein:
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| Befehl | RegQ | RegZ |
+---+---+---+---+---+---+---+---+
Nun Wird aus
MOV A, B
MOV = 0
A = 2
B = 3
In obige Felder eingesetzt ergibt sich binär
0000 10 11
Technisch werden also die Bit 7 bis 4 an den Befehlsdecoder angeschlossen.
Dieser Verwendet dann Bits 3 und 4 und das Quellregister auszuwählen und die Bits1 und 0 um das Ziel auszuwählen.
Und aus den Bits 7-4 ergibt sich die Operation, also Quelle ins Ziel zu kopieren.
Beim Immidiate-Befehl, weiss dann der Decoder, dass da noch mehr Bytes zum Befehl gehören. Um Platz zu sparen, könnte man jetzt das Feld RegQ dazu verwenden, wie viele zusätzliche Bytes noch gelesen werden müssen.
Ich hoffe damit sind jetzt alle Klarheiten beseitigt
Hier hat sich einer, wie in den 70er Jahren noch üblich, einen Computer aus einzelnen Gattern zusammengebaut:
http://www.homebrewcpu.com/Magic1.pdf
Ganzes Projekt:
http://www.homebrewcpu.com/
MfG Peter(TOO)