Vorschlag zu Hardware Implementierung.

    Vorschlag zu Hardware Implementierung.

    Hallo.

    Ich bin mir bei zwei kleinen Hardware Implementierungen unsicher.

    Bei meinem Relais Computer gibt es die Möglichkeit Methoden aufzurufen (oder besser gesagt: bei einem Sprung die Position merken) und anschließend wieder zurück zu kehren.
    Dazu ist meine Frage: Wenn man zurückkehrt: Soll das Register, das diese Adresse beinhaltet nach dem Sprung auf 0 gesetzt werden, oder soll die Adresse im Register bleiben?

    Dazu ein Beispiel:

    Quellcode

    1. 'Code
    2. Call
    3. 0
    4. 6 'Adresse 3
    5. 'Code
    6. Return
    7. 'Code 'Das ist das Sprungziel von Call
    8. Return


    Was hier passiert:
    1. Irgend ein Befehl wird ausgeführt (Adresse 0)
    2. Es wird zur Adresse 6 gesprungen (Adressen sind 16 Bit groß, eine Zeile aber nur 8, darum zwei Zeilen)
    3. Bei Adresse 6 wird iregend ein Befehl ausgeführt
    4. Es wird zur Adresse 4 gesrpungen (Call auf 1, Adresse auf 2 und 3, Nächster Code auf 4)
    5. Bei Adresse 4 wird irgend ein Befehl ausgeführt
    6. Und jetzt?


    Soll am Ende nochmal zur Adresse 4 gesprungen werden oder soll immer zur Adresse 0 gesrpungen werden?
    Wenn das Register, das die Adresse beinhaltet beim Zurückkehren zurückgesetzt werden soll dauert der Befehl 2 Schritte länger (eigentlich nur einen aber Befehle können aus technischen Gründen nur gerade Anzahlen an Schritten benötigen). Ich bin fast verleitet zu sagen 2 Schritte länger macht auch nichts aus aber rein theoretisch...


    Das zweite "Problem" ist folgendes:
    Um durch das Programm zählen zu können werden zwei Register benötigt:
    Das Program Counter Register, das die aktuelle Adresse beinhaltet,
    und das Increment Register, das zum Weiterzählen verwendet wird.
    Siehe diese Grafik:


    Wie man hier sieht bleibt der zuletzt im Increment Register gespeicherte Wert erhalten.
    Beim Beenden des Programmes (Befehl End) wird das PC Register auf 0 gesetzt.

    Und dazu meine Frage: Soll auch das Increment Register auf 0 gesetzt werden?
    Die Dauer des Befehls wird dadurch nicht verändert, weil das parallel zum Zurücksetzen des PC Registers passieren kann.
    Falls Ihr fragt warum: Aus schönheit?


    Wenn Ihr Vorschläge habt bitte auch begründen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils