Warum verwendet Forth keine Prozessor-Flags für die bedingte Ausführung?Forth- und Prozessor-Flags
Stattdessen wird das Ergebnis eines Vergleichs auf den Parameterstack gesetzt. Liegt es daran, dass die innere Interpreterschleife Flags ändern kann, wenn sie zur nächsten Anweisung geht? Oder ist es einfach, bedingte Logik zu abstrahieren?
z. auf x86 hält das Flag-Register Ergebnisse eines Vergleichs, da die meisten Prozessoren, wenn nicht alle ein Flag-Register haben werden.
Große Antwort. Dies bedeutet, dass die vierte VM geändert werden muss, um das Flag-Register als einen Teil der Definition zu verwenden, wodurch der Legacy-Code aufgebrochen wird. Dies kann oder kann nicht vorteilhaft sein. Die Geschwindigkeit kann auf Kosten der Komplexität erhöht werden. – Daryl
@Daryl, Optimierung Compiler braucht keine Änderungen auf der Quellcode-Ebene - d. H. Es ist nicht notwendig, Register als Teil der Definitionen enthalten. Der Forth-Compiler erzeugt nur Maschinencode, der in bestimmten Fällen Flags anstelle von Stacks verwendet. – ruvim