Compilererror .... very strange

  • 1
  • 2
  • Seite 1 von 2
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 61
Beiträge: 2170
Dabei seit: 03 / 2003
Betreff:

Compilererror .... very strange

 · 
Gepostet: 18.03.2026 - 15:09 Uhr  ·  #1
Hallo,

ich habe ein sehr seltsames Problem (Compiler 6.00.09) ..... Code im Anhang.

So wie der Code ist, ist er compilierbar und läuft.
Wird die Zeile 273 (//gDrawString(63,53,1,1,TxtRot0,'Schrittmotor-');) mit compiliert (also ohne //) ist das Programm ebenfalls compilierbar.
Wird jedoch der Ausgabetext verändert (es reicht am Ende das - zu entfernen) paßt der Code angeblich nichtmehr in den Flash (siehe Bilder).

Gruss
Harry

-------------------------

Hello,

I have a very strange problem (Compiler 6.00.09)... Code attached.

As it is, the code compiles and runs.

If line 273 (//gDrawString(63,53,1,1,TxtRot0,'Schrittmotor-');) is also compiled (without the //), the program also compiles and runs.

However, if the output text is changed (removing the - at the end is enough), the code supposedly no longer fits in the flash memory (see images).

Regards,
Harry
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Merlin
Administrator
Avatar
Geschlecht:
Alter: 26
Beiträge: 1497
Dabei seit: 03 / 2005
Betreff:

Re: Compilererror .... very strange

 · 
Gepostet: 19.03.2026 - 12:19 Uhr  ·  #2
Please do me a favour, Harry, and send me the asm and dsm files of both success and failure. Thank you

Harry, könntest du mir bitte einen Gefallen tun und mir die ASM- und DSM-Dateien sowohl des erfolgreichen als auch des fehlgeschlagenen Versuchs schicken? Vielen Dank.

Merlin
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 61
Beiträge: 2170
Dabei seit: 03 / 2003
Betreff:

Re: Compilererror .... very strange

 · 
Gepostet: 19.03.2026 - 12:58 Uhr  ·  #3
Hallo Merlin,

hier die 3 Versionen:
works --> compilierbar ohne Zeile 273
works_with_line273 --> compilierbar mit Zeile 273
dont_works_with_line273_without_'-' --> nicht compilierbar mit Zeile 273 ohne das '-' am Ende

Ich habe inzwischen eine Lösung gefunden, so daß ich weiter programmieren kann:
StepMaxFreq = 15000 anstatt StepMaxFreq = 16000
aber das ist natürlich keine richtige Lösung.

Gruss
Harry
-------------------------------------------------------------
Hi Merlin,

here are the 3 versions:
works --> compilable without line 273
works_with_line273 --> compilable with line 273
dont_works_with_line273_without_'-' --> not compilable with line 273 without a trailing '-'

I have since found a workaround so I can continue programming:
StepMaxFreq = 15000 instead of StepMaxFreq = 16000
but of course this is not a proper solution.

Regards
Harry
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Merlin
Administrator
Avatar
Geschlecht:
Alter: 26
Beiträge: 1497
Dabei seit: 03 / 2005
Betreff:

Re: Compilererror .... very strange

 · 
Gepostet: 20.03.2026 - 00:43 Uhr  ·  #4
Thank you Harry
Merlin
Administrator
Avatar
Geschlecht:
Alter: 26
Beiträge: 1497
Dabei seit: 03 / 2005
Betreff:

Re: Compilererror .... very strange

 · 
Gepostet: 20.03.2026 - 19:27 Uhr  ·  #5
OK Harry

When you said 'even removing the "-"' increased code size it was, of course, baffling.

However that was not the effect of what you did.

You use identical text literal in line 270 and line 273 in the program that works, so the compiler merges those two and only creates one instance. But when you remove the '-' from one and not the other the compiler can no longer merge them, so far from reducing code space usage by one character, you are actually adding a complete new string.

And this does indeed take you above the code space limit. You have a lot of constants in this program.

So I am sorry, but in this instance the compiler is not at fault.

=======================================================

Als Sie sagten, dass selbst das Entfernen des Bindestrichs die Codegröße erhöhte, war das natürlich verwirrend.

Das war jedoch nicht die Folge Ihrer Vorgehensweise.

Sie verwenden in Zeile 270 und Zeile 273 des funktionierenden Programms identische Textliterale. Der Compiler führt diese beiden zusammen und erzeugt nur eine Instanz. Wenn Sie jedoch den Bindestrich aus einer der beiden Zeilen entfernen, die andere aber nicht, kann der Compiler sie nicht mehr zusammenführen. Anstatt also den Speicherplatzbedarf um ein Zeichen zu reduzieren, fügen Sie tatsächlich eine komplett neue Zeichenkette hinzu.

Und dadurch überschreiten Sie tatsächlich die Speichergrenze. Ihr Programm enthält viele Konstanten.

Daher tut es mir leid, aber in diesem Fall ist der Compiler nicht schuld.

Regards

Merlin.
miparo
PowerUser
Avatar
Geschlecht:
Herkunft: Germany
Alter: 59
Beiträge: 1003
Dabei seit: 09 / 2007
Betreff:

Re: Compilererror .... very strange

 · 
Gepostet: 20.03.2026 - 22:39 Uhr  ·  #6
Hi,
es liegt nicht an deinen paar Flash Strings sondern an der wahnsinningen Stepperauflösung , wodurch eine riesige Accelation Tabelle ~ 60kB aufgebaut wird.
Sieht man im asm unter
SYSTEM.AccTab:
am Ende im Flash.
Diese wird unter Flash Verbrauch anscheinend nicht mitgerechnet, denn wenn du einen String entfernst von 14 bytes ! hast du eigentlich noch 54kB frei, laut Projekt Info.

miparo
Merlin
Administrator
Avatar
Geschlecht:
Alter: 26
Beiträge: 1497
Dabei seit: 03 / 2005
Betreff:

Re: Compilererror .... very strange

 · 
Gepostet: 21.03.2026 - 00:18 Uhr  ·  #7
Thanks for the clarification Miparo. Nevertheless, it is the additional string that takes it over the limit.

Regards
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 61
Beiträge: 2170
Dabei seit: 03 / 2003
Betreff:

Re: Compilererror .... very strange

 · 
Gepostet: 21.03.2026 - 08:39 Uhr  ·  #8
Hallo,

ok danke, daß die Steppertabelle nicht mitgerechnet wird, war mir nicht bewußt.
Jetzt muß ich mal nur noch wissen, für was diese Tabelle gut sein soll, denn ich arbeite im UserMode nur mit Step und Dir und einer externen Endstufe. Eine Beschleunigung/Abbremsen sollte doch wohl zur Laufzeit berechenbar sein?

Gruss
Harry
  • 1
  • 2
  • Seite 1 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   134   148 · Page-Gen-Time: 0.020812s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI