Microcode und ALE < Krypt.+Kod.+Compalg. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 08:01 Fr 07.12.2007 | Autor: | mored |
Hallo,
ich habe in einer Aufgabe gegeben,
3 Bit ALE
7 Bit X-Bus
7 Bit Y-Bus
7 Bit Z-Bus
und die Operationen
001 Subtraktion
011 Addition
ich soll nun die Aufgabenstellung
S2 = S3 − (S6 + S1)
in einen Microcode zur ALE Steuerung uwmandeln. Wobei S für die jeweiligen 8-Bit Register steht.
Ich bin so vorgegangen, ich habe die Rechnung in zwei Schritte zerlegt. Das Zwischenergebnis habe ich in ein Register geschrieben und dieses dann für die Weiterrechnung verwendet:
S2 = S6 + S1
S2 = S3 - S2
Der Microcode würde dann so aussehen:
011 0000001 0100000 0010000
001 0001000 0010000 0010000
Ist das so richtig? Ich konnte leider nicht viel über das Programmieren von ALEs finden. Oder muss ich zum Übertragen das Carry Flag benutzen? Sowie ich das bis jetzt verstanden habe, dient dieses Flag nur für Schieboperationen.
Vielen Dank schonmal.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
deine Ausagen klingen schon recht vernünftig, aber ohne genaue Kenntnis des Aufbaus deines Systems (Register, ALU + Befehlssatz) kann man nicht endgültig sagen, ob es so richtig ist, was du geschrieben hast.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:43 Fr 07.12.2007 | Autor: | mored |
Hallo Martin,
erstmal Danke für Deine Antwort. Mehr Informationen als die die ich beschrieben hatte, habe ich leider nicht.
Meine generelle Frage war ob ich bei den Operationen der ALU, die Rechnungen so zerlegen kann und Zwischenergebnisse in ein beliebiges Register schreiben darf, das dann wieder für die nächste Rechenoperation herangezogen wird.
Ist das so erlaubt?
Danke und Gruß
|
|
|
|
|
Hallo,
du musst die Rechnungen sogar zerlegen. Das macht ja jeder Compiler. Grundlage dafür sind Klammern und Operatorpräzedenzen.
Die Frage, ob man die Zwischenergebnisse in beliebige Register packen kann, hängt davon ab, welche Arten von Registern es gibt und ob sie dafür geeignet sind.
Wenn alle Register gleich sind, dann wird es wohl gehen.
Wie die Notation des Microcodes ist, weißt du natürlich besser. Ich nehme an, sie ist:
<Op> <Quelle1> <Quelle2> <Ziel>
und die Register werden über Masken indiziert.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:42 Fr 07.12.2007 | Autor: | mored |
Hallo Martin,
nochmals Danke. Mit der Notation hast Du recht. Ich war mir nur mit der Zerlegung nicht wirklich sicher.
Danke nochmal
|
|
|
|