Beiträge: 291
Themen: 53
Registriert seit: Sep 2013
Bewertung:
7
Hallo,
was ist der beste/einfachste Weg, sein Blitz2-System nach AmiBlitz zu migrieren? Ich habe ein ziemlich stabiles System, bei dem eigentlich die Libs schon veraltet sind. Leider habe ich auch ein paar eigene Libs, die ich früher mal geschrieben habe. Die müßte ich auch "rüberretten". Ich habe probeweise schon ein paar Src in AB kompiliert, oder versucht zumindest. Leider kommt bei den meisten massig Tokenclashes bzw. Library not found (wie erwartet).
Also alles einzeln als ASCII speichern, oder?
Was mache ich mit den Libs, die haben schonmal falsche Nummern. Muß ich die neu kompilieren unter AB?
*schnipp
Code: #nLocale = 137
#nSort = 131
#nFile = 41
; USER(CODER/BETA) LIBRARIES
#RayToolsLib = 44
#RayPixLib = 34
#RayDosLib = 23 ; CLASH(2)!
#RayAreaLib = 22
#RayMathLib = 20
; WARNING! 2 LIBRARY CLASH(S) (=doubles/triples etc.) FOUND !
; FREE library numbers(139):
; 1 2 3 5 6 7 8
; 15 16 17 18 21 24 25 26 27 28 29 30 31 32 33
*schnapp
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Zitat:Also alles einzeln als ASCII speichern, oder?
Ja, das ist die sicherste Methode
Zitat:Was mache ich mit den Libs, die haben schonmal falsche Nummern. Muß ich die neu kompilieren unter AB?
Wenns sowieso deine eigenen sind, dann kannst du dir eine freie Nummer suchen und die nehmen.
Wobei.... wenns wichtige Librarys sind die für alle interessant sind, dann gehören die in die Deflibs integriert.
Beiträge: 291
Themen: 53
Registriert seit: Sep 2013
Bewertung:
7
Okay, danke.
Das habe ich schon befürchtet. hock:
Gefällt mir aber gut, die IDE im Vergleich zum angegrauten BB2. Bis jetzt werden die EXE allerdings größer, weiß nur noch nicht, warum. Eventuell sind meine Libs schon seeehhr alt. :lol:
Grüße
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Hallo hackball
Zitat:Bis jetzt werden die EXE allerdings größer, weiß nur noch nicht, warum.
Hast du auch in den CompilerSetting die Option make smaller code aktiviert ?
Beiträge: 291
Themen: 53
Registriert seit: Sep 2013
Bewertung:
7
Ja, habe ich. Das ist ähnlich wie in BB2, so mag ich das.
Der Unterschied ist vielleicht ein paar KB, u.a. auch, weil ich für meine MemFill-Funktion z.B. jetzt (noch) den Ersatz Amosfunclib nutzen muß. Aber das kann ich noch ändern.
Ich dachte nur, ich hätte mal irgendwo gelesen, daß AB nur noch die Funktionen dazulinkt, die man benutzt und nicht mehr die ganze Lib. z.B. von der Screenslib benutze ich nur Screentags und CloseScreen. Und das auch nur, weil GadToolslib ohne Screenslib nicht läuft. Und Windowslib auch nicht(?). Eigentlich wollte ich NScreenslib nutzen.
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Ich wundere mich auch etwas, weil in den Anfängen von Ab3 es einen Menüpunkt gabe der make smallest code hies.
Wenn der angewählt wurde, dann wurde der Source sooft ( 10 mal ?) kompiliert bis wirklich nur noch die Funktionen aus einer Lib drin waren.
Scheinbar klappt das nicht mehr...
Aber ich sehe auch gerade das es einen weiteren Menüpunkt gibt die da heist Active Function Optimizer (smaller Code)...
mal sehen
Beiträge: 396
Themen: 8
Registriert seit: Sep 2013
Bewertung:
0
Um vielleicht etwas Licht ins Dunkel zu bringen:
1. Da die BlitzLibs von AB3 neuer sind als von BB2, sind sie vermutlich auch einen Tick größer. Daher die größere Excutable.
2. BlitzLibs werden IMMER komplett dazugelinked. "Make Smallest Code" ändert daran nichts.
3. "Make Smallest Code" >< "Function Optimizer"
"Make Smallest Code" macht 2 Compiler Läufe, um die Executable auf Größe zu trimmen. Das ist rein technischer Natur und keine Dead-Code Elemination. Das gab es auch schon in BB2.
Der "Function Optimizer" kam erst mit AB2.4 und entfernt nicht referenzierte Funktionen aus dem Binary (Dead Code). Dazu braucht der Compiler mehrere Läufe, je nachdem wie stark die Funktionen verschachtelt sind. Früher hat Bernd einfach mal 10 Läufe gemacht und gut ist. In vielen Fällen reicht das auch, in vielen ist das aber auch unnötig. AB3 macht derzeit so viele, bis die Executable nicht mehr kleiner wird. Ich glaube als Maximum immer noch 10.
Entfernt werden aber nur Amiblitz Funktionen, keine BlitzLib Funktionen/Anweisungen.
Zum Konvertieren:
Entweder:
- In BB2 reinladen und als ASCII speichern, dann wieder in AB3 reinladen, idealerweise als .ab3 weiterarbeiten.
Oder:
- Amiblitz3 mit den Deflibs deiner BB2 Installation starten (ja, das geht per Tooltype LIBFILE="Blitz3:Blitzlibs/Deflibs"!). Per CLI Interface kann man dann auch wesentlich schneller konvertieren, falls das viele Files betrifft. (>>10)
Bei deinen speziellen BlitzLibs würde ich schauen, ob du die wirklich brauchst. Die meisten und "uns" bekannten sind in den AB3 Deflibs drin.
Falls es eigene sind die du selbst geschrieben hast, würde ich sie lieber direkt einbinden als Include und Funktionen draus machen.
Wenn das lediglich Stubs für Amiga Shared Libaries sind, gibt es einen besseren Weg das als Include einzubinden.
AB3 bietet auch die Möglichkeit, einzelne Libs dazuzuladen wenn man sie ins "beta" Verzeichnis reinkopiert. Dann muss man aber aufpassen dass die Lib IDs passen, damit es keine Clashes gibt, d.h. du müsstest die LibIDs per BlitzLibMan oder ähnlichem Tool anpassen. Eine Liste der besetzten IDs gibts in der Distro.
P.S. Von allen Libs, die mit "N" anfangen, würde ich Abstand nehmen. Die sind nicht stabil und in unfertigem Zustand stehen geblieben. Wenn du deine Executable möglichst klein haben willst, dann benutze AmigaOS direkt. Das RKM ist dein Freund (zum Teil in Ab3 mit drin)
Beiträge: 291
Themen: 53
Registriert seit: Sep 2013
Bewertung:
7
Beiträge: 291
Themen: 53
Registriert seit: Sep 2013
Bewertung:
7
Der Wanderer schrieb:...
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. Also du meinst alle Prozeduren, also Statement {}/Function{} ? Das könnte ich hinbiegen, sind meistens nur kleine Sachen.
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
Beiträge: 396
Themen: 8
Registriert seit: Sep 2013
Bewertung:
0
hackball schrieb:Der Wanderer schrieb:...
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. Also du meinst alle Prozeduren, also Statement {}/Function{} ? Das könnte ich hinbiegen, sind meistens nur kleine Sachen. 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.
"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: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
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.
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.
|