Maschinenbefehl

OP #6384286
Lesenswert?

Ich habe ein Mikroprogram gegeben und soll bestimmen, welcher 
Maschinenbefehl implementiert wird:

mar := pc; rd;
rd;
ac := ac+1;
a := inv(mbr);
ac := ac+a ;

Wie soll man das herausfinden, welcher Maschinenbefehl implementiert 
wird, ich kann beschreiben, was das Mikroprogramm in den einzelnen 
Zeilen macht, aber ich kann jetzt keinen Maschinenbefehl nennen...
Kennt sich jemand aus?
Gast #6384329
Lesenswert?

@ Pat

Der Witz ist doch, dass Du selbst überlegen sollst. Und Deine eigenen 
Denkprozesse beobachten und darüber nachdenken sollst.

Das ist, was im eigentlichen Sinn, mit "selbstständigem Arbeiten" 
gemeint ist.

Du willst doch (vermutlich) einen akademischen Grad erwerben.
Vorgesagte Lösungen hinmalen kann jeder noch so ungebildete Mensch. 
Dafür kriegt man allenfalls im Kindergarten ein Blümchen.
OP #6384355
Lesenswert?

Das extra rd ist dafür da, weil man auf den Hauptspeicher zugreifen 
will, das braucht Zeit und damit es sequentiell abgearbeitet werden 
kann, wird nochmal extra rd hingeschrieben.

Ja, danke!!! jetzt sehe ich das auch, das das sicher das 
Zweierkomplement ist. Es wird das Einerkomplement gebildet und dann +1.

Aber wenn ich jetzt hinschreibe der Machinenbefehl ist das 
Zweierkomplement, ist das ja kein Maschinenbefehl...
Ein Maschinenbefehl ist ja immer eine Bitfolge aus 0 und 1, oder nicht?

Zu selbstständigen Denkprozeß: Das ist keine Aufgabe, die ich zu 
erledigen habe. Ich studiere etwas komplett anderes, aber ich finde es 
heutzutage wichtig die grungdlegenden Konzepte eines Digitalrechners 
annähernd zu verstehen. Hab die Aufgabe aus dem Internet. Aber ich 
verstehe was du meinst, ich werde aber kein Informatiker...
#6384385
Lesenswert?

Was falsch ist: Es wird der Operand ausgehend vom PC (Program Counter) 
gelesen. Der PC wird aber nicht hochgezählt. Das geht also in die Hose, 
der nächste Befehl verwendet deshalb den Operanden diesen Befehls als 
Opcode. Da fehlt sowas wie PC=PC+1.

Eine Negation ist beteiligt, ist aber nicht der gesamte Befehl. Also 
wenn du es unbedingt fertig haben willst: Da wird vom Akku (ac) eine im 
Befehl enthaltende Konstante subtrahiert, indem deren Negation addiert 
wird. Und das ist ein für 8-Bitter recht typischer Maschinenbefehl.
Moderator (Firma: Titel) Persönliche Seite #6384443
Lesenswert?

Pat ". schrieb:
> Wie soll man das herausfinden, welcher Maschinenbefehl implementiert wird
Ich würde im Datenblatt des fraglichen µC die Befehlsliste suchen.

Pat ". schrieb:
> Ein Maschinenbefehl ist ja immer eine Bitfolge aus 0 und 1, oder nicht?
Ein Maschinenbefehl ist in binärer Form ein Bitmuster, das im Speicher 
abgeholt wird und Aktionen auf dem Prozessor auslöst. Es gibt aber auch 
eine Textform dafür, das nennt sich dann (vereinfacht) Assemblerbefehl.

> aber ich finde es heutzutage wichtig die grungdlegenden Konzepte eines
> Digitalrechners annähernd zu verstehen.
Das läuft aber auf einer völlig anderen Abstraktionebene ab. Um die 
Funktion eines Verbrennungsmotors zu verstehen, reicht es auch aus, zu 
wissen, dass Benzin mit Luft gemischt, dann verbrannt wird und sich 
dabei ausdehnt. Wie genau dieser chemische Verbrennungsprozess abläuft 
und was dabei der Unterschied zur Dieselverbrennung ist, ist dabei 
völlig uninteressant, solange du ihn nicht optimieren musst.

Und genau das selbe ist der Maschinencode: um einen "Digitalrechner" zu 
verstehen, reicht es aus, zu wissen, dass ein Hochsprachenprogramm in 
Maschinenbefehle umgesetzt wird, die nacheinander abgearbeitet werden. 
Wie das genau passiert ist bei jedem Prozessor unterschiedlich. Manche 
Prozessoren haben einzelne Maschinenbefehle, mit denen man z.B. ganze 
Speicherbereiche vergleichen oder kopieren kann (wie z.B. ein x86-CISC 
Prozessor mit 1 einzigen Maschinenbefehl), andere haben Befehle, die 
gleichzeitig multiplizieren und addieren (Signalprozessoren) und andere 
haben nur ganz simple Maschinenbefehle und auch nur ganz wenige (RISC), 
die aber schnell ausgeführt werden.
Und dann kommen da noch Geschichten wie Cache-Verwaltung und 
Speicherschutzmechanismen und Multicore und wasweißichnochalles mit ins 
Spiel.

Deshalb ist das genaue Verständnis eines Maschinenbefehls und dessen 
Auswirkungen eigentlich nur nötig, wenn du genau mit diesem Prozessor 
tiefer einsteigen willst.

Wenn du jetzt aber trotzdem und mit Fleiß den Ablauf im inneren einer 
CPU kennen lernen willst, dann empfehle ich dir das hier:
https://marian-aldenhoevel.de/papiercomputer/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren