
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo miteinander > Leider kann man so nicht prüfen, ob die richtige Anzahl von Parametern übergeben wurde und aus dem Stack geladen wurde. Wie schnell kann es also zu einem Zugriff ins Nirvana kommen, wenn durch falsches PUSH bzw. POP die Werte nicht mehr stimmen? gut das Du das ansprichst, ins Nirvana kommt man nämlich nur bei der "neuen" C-Control, da diese Rechen- und GOSUB-Stack vereint und Stacküberläufe, bzw. Stackfehler nicht detektieren kann. Wie es besser gemacht werden kann, zeigt die OM. Es würde mich außerdem interessieren, ob Du das von Dir angegebene CCBASIC-Beispiel überhaupt jemals getestet hast. Du vergleichst nämlich Äpfel mit Birnen. Auf der "neuen" C-Control ist das Beispiel überhaupt nicht lauffähig, sondern wegen des modifizierten Stackhandlings nur auf der 1.1er und auf der OM. Den Rechenstack für die Übergabe von Parametern zu verwenden (wie es nebenbei in vielen Compilaten der Fall ist) magst Du als nicht sonderlich sinnvoll ansehen, es bietet aber den entscheidenden Vorteil, daß dieses Verfahren mit weniger Tokencode zu realisieren ist, also zu kleineren Programmen führt: Dein Beispiel zu Basic++ erzeugt mit Deinem Compiler 40 Byte Tokencode und belegt 12 Byte User-RAM. (Mit "Option CC1.1" sind es 32 Byte Code.) Dein Beispiel zu CCBASIC kompiliert mit OCBASIC dagegen nur in 24 Byte Tokencode und belegt 2 Byte im User-RAM. Auf der OM sind es sogar nur 20 Byte Tokencode! Dietmar Meine Homepage: http://ccintern.dharlos.de |
| Antwort schreiben |