MAL Instruktionen, MAL Programm schreibe und verstehen

Erste Frage Aufrufe: 1017     Aktiv: 07.06.2020 um 16:40

0

Hallo. Ich beschäftige mich derzeit mit dem Mikroprogrammieren und den MAL-Instruktionen. Leider haben wir nicht sehr viel Informationen vom Prof zur Verfügung gestellt bekommen und man findet sehr schwer irgendwelche Info im Internet. Mit dem empfohlenen Buch komme ich leider nicht klar, da finde ich alles sehr langweilig geschrieben und kann davon nichts mitnehmen. Da hätte ich über das Thema paar Fragen und wenn sich jemand findet, der etwas dazu weiß, wäre richtig nett!

Ich möchte halt verstehen, wie sich der Stack bei den einzelnen Befehle entwickelt. Wenn wir ein Programm haben die z.B so aussieht

MAR=SP=SP-1 H=TOS MDR=TOS=MDR+H

wie entwickelt sich hier der Stack? Ich weiß, dass der Zeiger (SP) um 1 runtergesetzt wird und zeigt nun auf das zweit oberste Wort auf dem Stack. Was passiert mit dem oberste dann, worauf der Zeiger vor Zeile 1 gezeigt hat? Bleibt es da, wird es vom Stack weggeworfen? Dann sagen wir halt dass H=TOS ist also ist der zweite Operand ins H geladen und dann in Zeile 3 werden die zwei Operanden zusammen addiert. Das Ergebnis geht ins MDR ist halt wegen TOS oben auf de Stack. Was passiert mit den zwei obersten Worte, die auf dem Stack vor diesen Befehlen lagen?Sind die noch da? Und wann kommt das Ergebnis auf den Stack - vor oder nach der steigenden Taktflanke im ALU?

Da will ich auch selbst ein Programm schreiben, wobei wir 2 Worte auf dem Stack haben und a NOR b berechnen wollen. Schreibe ich da nur diese Notation MAR=SP=SP-1 .... oder muss ich auf jeden Fall davor noch die Labels iload1, iload2 oder iadd1,iadd2.. schreiben? Wie weiß ich wann es iload ist und wann z.B Main1 ist, da wir in beiden PC=PC+1, fetch als Befehl haben. Den Befehl verstehe ich auch nicht so ganz. Ich weiß, dass der Befehl uns sagt, dass in PC der nächste Befehl geladen werden soll oder so was, aber so richtig weiß ich nicht was er macht.

Und wie sage ich mit der MAL Notation dass die Worte im Stack aus de Stack weggeworfen werden sollen, damit das Ergebnis von aNORb auf dem Stack geschrieben wird?

Wie weiß ich was ich benutzen soll - iload, iadd, wide, wide_iload, istore... Ich verstehe was alle machen aber weiß nicht welche ich benutzen soll wenn ich selbst so ein kleines Programm schreiben will. Dar man die gemischt benutzen, also z. b 2 Zeilen mit iload Befehle, 2 Zeilen mit iadd Befehle, oder alles muss nur z.B. aus iadd Befehle gebaut werden? So haben wir es in der Vorlesung gehabt- Beispiele für diese Befehle nur für iadd und da haben wir jede Zeile besprochen, was sie so macht und haben sie Zyklus genannt.

Danke im Voraus

Diese Frage melden
gefragt

Punkte: 10

 
Kommentar schreiben
0 Antworten