05.12.2013, 01:25
hackball schrieb:Was meinst du mit "hinbiegen"? Statements und Functions werden weggelassen in der Exe, wenn sie nicht referenziert werden. Das macht der "Function Optimizer" von Bernd, den es ab 2.4 gibt.Der Wanderer schrieb:...Also du meinst alle Prozeduren, also Statement {}/Function{} ? Das könnte ich hinbiegen, sind meistens nur kleine Sachen.
Der "Function Optimizer" kam erst mit AB2.4 und entfernt nicht referenzierte Funktionen aus dem Binary (Dead Code). ...
Entfernt werden aber nur Amiblitz Funktionen, keine BlitzLib Funktionen/Anweisungen.
"Make Smallest Code" gibt es schon seit BlitzBasic2, macht aber was anderes. Es setzt nur den CodeBuffer auf die optimale Größe, eigentlich eine Selbstversändlichkeit bei einem Compiler. Da es aber etwas krude implementiert ist, braucht Amiblitz dazu zwei Passes, und deshalb kann man das abschalten. Dann wird die Exe unnötig gross. Bei dir liegt es aber daran, dass die BlitzLibs in AB3 gegenüber BB2 größer geworden sind, und die werden IMMER komplett eingebunden,
Zitat:Ist es dir so wichtig eine Hand voll Bytes zu sparen? Entwickelst du für einen A500? Dann würde ich sowieso das finale Kompilat mit BB2 erstellen, da AB3 nicht mehr 68000 kompatibel ist.Zitat:... Wenn du deine Executable möglichst klein haben willst, dann benutze AmigaOS direkt. Das RKM ist dein Freund (zum Teil in Ab3 mit drin)Naja, das ist mir schon klar, das kann ich auch, zumindest bis OS3. Allerdings muß man dann ALLES auf OS umstricken, damit man die Blitzlibs los wird, wegen der Obj Abhängigkeiten. Naja, und schwupps-habe ich nach ein paar Jahren auch so ein Include-Verzeichnis wie das von AB3. Neee, soviel Zeit habe ich nicht. Eher hacke ich in der Screenslib rum oder so. Grüße
Wie viel größer ist denn die Exe? Evtl. hast du auch DebugInfo für Executables angeschaltet?
Mit PED kannst du den Source analysieren, welche BlitzLibs verwendet werden mit welchen Befehlen. Evtl. kannst du schauen, ob du eine BlitzLib nur selten brauchst und kannst die durch eigene oder OS funktionen ersetzen. Du musst ja nicht eine Lib ersetzten, die du intensiv benutzt.