
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo, > 140 Byte Variablenspeicher ? Ja. > 2 Byte vom System belegt, welche ?! (BYTE[1] und BYTE[2] ?) BYTE[1] und BYTE[2] werden in BASIC++ für die M Unit 2 und Micro auf jedenfall für Rückgabewerte benötigt! Darüberhinaus legt BASIC++ noch Variablen für die String Operationen an (die man aber per OPTION NOSTRING ausschalten kann). Betroffen sind davon WORD[2] und WORD[3]. Da der Compiler aber nicht die effektiv belegten Speicherstellen zählt sagt der Compiler 14 Byte Variablen wären reserviert anstatt 6 Byte (das bedeutet aber nicht, dass Du dann nur noch 140 - 14 = 126 Byte freien Speicher hast). > macht eine direkte adressierung überhaupt sinn und wird sie noch > bis zum BYTE[140] unterstützt? Sie macht sogar (fast) immer viel mehr Sinn als die automatische Vergabe von Offsets. In BASIC++ wird BYTE[140] untersützt. Ob das für CCBasic auch gilt kann ich nicht sagen. > was passiert mit bits im BYTE[140]? (BIT[1113] bis BIT[1120]) Auf Grund von technischen Hindernissen seitens des Controllers kann man nur bis BIT[256] adressieren. Das müsste glaube ich BYTE[32] sein. > was zählt der BASIC++ - Kompiler als "Reservierte Variablen"? Der Compiler zählt einfach die Bytes und Words (nicht Bits) zusammen, egal ob sie sich überschneiden oder nicht. DEFINE i AS BYTE[3] ' liegt in WORD[2] DEFINE b AS WORD[2] Würde also 3 Byte ergeben + System Rückgabe Bytes. > gehen mir die zuvielgezählten BYTEs verloren oder sollte ich die meldung > des kompilers ignorieren? Auf der C-Control wird ja nicht während der Laufzeit Speicher für ein Programm oder gar eine Funktion reserviert (oder dimensioniert). Im Prinzip wird einfach nur ein Platzhalter (Variablenname) für eine Speicherstelle definiert. Daher ist es auch vollkommen korrekt DEFINE zu gebrauchen (auch wenn es das so in anderen BASIC Dialekten nicht gibt). Die Art und Weise wie der Compiler die Variablen zählt gefällt mir aber selber nicht. Daran werde ich noch arbeiten, so dass auch Überschneidungen berücksichtigt werden. > wird vielleicht die direkte adressierung durcheinander gebracht ?! Wenn man direkt adressiert ist man bei BASIC++ und CCBasic immer auf der besseren Seite. Gruß, Stefan Meine Homepage: http://www.fdos.de |
| Antwort schreiben |