CB1: Intepreter Fehler

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

CB1: Intepreter Fehler
Hey.
Ein paar Fehler sind mir im Python-Interpreter aufgefallen.

  1. Der Interpreter macht die arithmetischen Operationen nicht auf 64-Bit Basis
  2. Die Reihenfolge der Operanden (z.B. CADD, CBLT, …) stimmen nicht mit der Angabe überein.

Lg Christian

1 „Gefällt mir“

Der Interpreter akzeptiert es nicht, wenn mehr Argumente auf den Stack
gepusht sind als die Funktion braucht. Das kann zum Beispiel passieren
bei nested functions. Es sollte irgendwo vermerkt werden, dass der Interpreter
das nicht mag. Semantisch sind ja beide Varianten richtig.

1 „Gefällt mir“

Funktionsaufrufe im Interpreter
Das ist leider unterspezifiziert, ja…

Zwischen einem CPUSH und dem zugehörigen CCALL soll kein weiterer CCALL stattfinden.

Das ist eine Einschränkung, die die Implementierung des Interpreters (und, falls ihr das
implementieren wollt, eine Registervergabe) erleichtet.

Leider habe ich vergessen, diese Einschränkung zu dokumentieren.

Ist hiermit nachgeholt.

1 „Gefällt mir“

Integer-Arithmetik im Interpreter
Der interpreter implementiert nicht 64-Bit Zweierkomplement-Arithmetik wie die
Sprachspezifikation verlangt.

Statt dessen wird die Biginteger-Implementierung von Python verwendet.

Ich habe (versucht) alle die Testcases, bei denen Über- oder Unterlauf auftreten, auszukommentieren,
so dass sie nicht getestet werden. Diese Testcases, sollte ich einen übersehen haben, sind
für Meilenstein 4 nicht relevant.

1 „Gefällt mir“

Noch eine kleine Sache. Die Ackermann-Funktion läuft auf den CIPs mit dem Zeitlimit
von 5-Sekunden nicht durch. Man kann es im Makefile der testsuite erhöhen.

Lg Christian