prozessorsimulation



  • ich habe vor eine kleine programmiersprache zu entwickeln, die zur laufzeit von einem c++-programm compiliert wird. das programm soll dann auf einem kleinen simulierten prozessor laufen. das parsen und das compilieren in einen eigenen maschinencode dürfte ich auch alleine hinbekommen (vielleicht lerne ich auch erst assembler, dann muss ich nichts eigenes erfinden). meine frage richtet sich eher auf das design dieses prozessors. ich dachte zunächst, ich brauche folgendes:
    hauptspeicher mit eindeutigen adressen
    instruktionsspeicher mit adressen ebenfalls mit indizes von 0 an, allerdings in anderem speicherbereich
    callstack mit zeigern auf den instruktionsspeicher
    ein bündel register
    eine schleife in c++, die die instruktionen nach und nach abarbeitet

    wird das ausreichend sein oder habe ich etwas fundamentales vergessen?

    mit was für einem performanceunterschied muss ich etwa rechnen zwischen nativem c++ und der eigenen programmiersprache (compileroptimierungen etc. nicht eingerechnet)? ich ging bislang etwa von einem faktor 2 bis 3 aus.

    zu denen die nun kommen und sagen, dass es das schon gibt oder dass das sinnlos ist: ist mir egal, ich hab spass und freude daran und lerne ja auch einiges.

    schönen tag noch



  • Vielleicht erstmal ein gutes Buch / Skript über Prozessor-interna lesen. Der Prozessor macht mehr als stumpf Befehle nacheinander reinholen und abarbeiten.

    Mal ein paar Stichworte zum Googeln: Superskalare Prozessoren, feinkörnige Parallelität, Sprungvorhersage

    Schau dir auch mal an, wie modernes Memory Management in einem Prozessor funktioniert. Klar wirst du nicht alles für deinen virtuellen Nachbau brauchen, aber ich denke eine gute Grundlage zum Verständnis schadet nicht.

    Hast du das gerallt?



  • Hast du dir auch schon p-Code angesehen?
    (Für den Anfang)



  • Fang mit was einfachem an, wie einer Stack- oder Akkumulatormaschine.

    EDIT: Als erstes sollte der Brainfuckinterpreter kommen.


Anmelden zum Antworten