
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, > Die Parameterübergabe und Werterückgabe bei Funktionen ist natürlich sehr nützlich, da Programme dadurch übersichtlicher werden und sich der Programmierer um nichts mehr zu kümmern braucht. Aber die zur Parameterübergabe benutzten Variablen belegen Platz im knappen User-RAM. Dieser Platz wird nur einmal genutzt. Lokale Variablen belegen also global Platz. Somit ist das ein zweischneidiges Schwert. Exzessiver Gebrauch ist zu vermeiden. > > Das folgende kleine BASIC++-Programm belegt zum Beispiel 8 Byte des User-RAMs. Mit Word-Variablen wären es sogar 14 Byte: > > declare function test1(a as byte, b as byte, c as byte) > declare function test2(a as byte, b as byte, c as byte) > > print test1(1,2,3) > print test2(4,5,6) > > function test1(a as byte, b as byte, c as byte) > return 123 > end function > > function test2(a as byte, b as byte, c as byte) > return 123 > end function > Da ist in der Doku drauf hingewiesen worden und genau dafür gibt es den REF Befehl, so dass Du nur drei Byte Variablen anlegen muss, sofern test1 und test2 nicht auseinander aufgerufen werden. Der Vorteil des REF Befehls ist ja die Komfortabilität der Parameterübergabe mit rel. wenig Speicher zu realisieren. Sofern Du über die alte C-Control verfügst kannst du weitere zwei Byte mit OPTION CC1 einsparen. Diese zwei Byte werden für die C-Control M Unit 2.0 verwendet um Rückgabewerte realisieren zu können. Man hätte dies auch über das Stack Objekt machen können, jedoch war ich dafür eher zwei Byte zu opfern aus folgenden Gründen: * Kompatibilität zu CC1, wenn man Option mal vergißt * Stack.[...] spart zwar User Ram, frisst aber deutlich mehr Speicher, da es Initialisiert werden muss u.ä. Die neue MUnit verfügt nämlich über einen richtigen Stack mit dem auch die Rücksprungadressen gespeichert werden. Das hat Vorteile gegenüber der alten Version, hatte jedoch den Nachteil, dass keine Rückgabewerte mehr gemacht werden konnten. Mit OPTION MICRO kann man übrigens den Rückgabewert auf ein Byte beschränken. Gruß, Stefan Meine Homepage: http://www.fdos.de |
| Antwort schreiben |