ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > BlitzBasic Decompiler? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
1 -2- | [ - Beitrag schreiben - ] |
06.02.2014, 10:30 Uhr Thore Posts: 2266 Nutzer |
> Es wird ja nicht eine Mega Runtime dazu gelinked, sondern diese ist in ca. 250 kleine Module zerteilt, von denen selectiv gelinkt wird. Das ist prinzipiell der gängigste Weg um ein Optimum zu erreichen. Ich denk auch nicht, daß ein "Hello World" das Ziel von BlitzBasic ist, das kann ich auch mit einem Shell Befehl. Die Link-Libs bleiben ja immer gleich groß und fallen bei größeren Projekten dann gar nicht mehr nennenswert ins Gewicht. Wer es am Ende kleiner haben will, kann ja einen Binary Packer verwenden Zum Optimieren und Filegröße ein Beispiel (von vielen): Wenn die fixen Schleifen "urolled" werden, also aufgedröselt ohne Schleife, wird das Programm zwar schneller aber größer. Es ist also nicht richtig, daß das kleinere welches das gleiche tut, auch automatisch besser oder schneller ist. [ - Antworten - Zitieren - Direktlink - ] |
06.02.2014, 13:13 Uhr Holger Posts: 8116 Nutzer |
Zitat:Es ist aber auch nicht richtig, dass größer gleich schneller ist. Wenn Du eine Schleife aufrollst und sie dann nicht mehr in den CPU Cache passt, ist sie möglicherweise unterm Strich langsamer geworden. Das ist für unbenutzte Funktionen aber irrelevant. Die haben auf die Performance keinen Einfluss, höchstens auf die Ladezeit. -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
06.02.2014, 14:00 Uhr Thore Posts: 2266 Nutzer |
@Holger: Ich hab nicht behaupter, dass allgemein größer gleich schneller ist Ich hab nur _ein_ Gegenargument gebracht, dass kleiner nicht unbedingt schneller ist. Es hängen viele Faktoren zusammen. Z.B. auf dem 68060 wird ein unrolling weniger bringen als auf einem 68030, da der 060er einen Jump-Cache hat. Daneben gibt es noch die Art des Algorithmus und Befehle die das gleiche tun aber langsamer sind (Div 2 statt Rol 1) Klar. Aber darum gings mir nicht, es ging mir in dem "Ausflug" nur um das Statement dass kleiner "besser" sei. Hat auch mit BlitzBasic nicht viel zu tun, da es hier ja um die Link-Libs geht. Aber die ungenutzten Funktionen stören ja nicht bei einem "echten" Projekt, wie gesagt, es ist nicht auf "Hello World" Programme beschränkt. [ - Antworten - Zitieren - Direktlink - ] |
07.02.2014, 01:17 Uhr huepper Posts: 481 Nutzer |
Was macht eigentlich Bernd (Rösch) heute, man hört und liest gar nix mehr von ihm ? -- Signatur ? hmm wo hab ich sie nur wieder ? [ - Antworten - Zitieren - Direktlink - ] |
07.02.2014, 09:12 Uhr Blackbird Posts: 634 Nutzer |
Von Bernd hat so gut wie keiner mehr was gehört... Nach all den Anstrengungen für ihn an den Source zu Stormwizard zu kommen ist er einfach nach kurzer Zeit abgetaucht. Vieleicht ist er ja fahradfahren auf Hawai oder macht ne Busreise in der Karibik -- regards Blackbird [ - Antworten - Zitieren - Direktlink - ] |
07.09.2014, 22:18 Uhr inq Posts: 445 Nutzer |
Zitat: (Ausgrab) Kann er nicht? Also, DevPac z.B. weiß nach dem Assemblieren nicht, daß es "Subroutinen"/Codesegmente gibt, die nicht ausgeführt werden? z.B. ein "if 0 then gosub label" könnte der ASM nicht erkennen und das dann wegoptimieren? Oder ein Label nach einem RTS, das niemals im Code referenziert wird, bleibt sammt nachfolgendem Code im Exec? Sollte da nicht irgendein Preprocessor durchfegen? -- Config: A1200/30/50/FPU/SCSI/64MB, WinUAE/40/xx/xxMB, EUAE/40/25/xxMB, CDTV, CD32/SX32MK2/HD - AOS3.5 [ - Antworten - Zitieren - Direktlink - ] |
08.09.2014, 08:52 Uhr thomas Posts: 7718 Nutzer |
@inq: Code der nicht offensichtlich referenziert wird, kann trotzdem ausgeführt werden. code:anfang: lea tab,a0 lsl.l #2,d0 add.l d0,a0 jmp (a0) tab: bra a bra b ; und die hier bra c ; würdest du bra d ; alle wegoptimieren bra e ; weil sie ja nirgendwo bra f ; referenziert werden? Das gäbe aber ein paar hübsche "unerklärliche" Abstürze, besonders bei einem größeren Projekt. -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ Dieser Beitrag wurde von thomas am 08.09.2014 um 08:53 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
08.09.2014, 14:27 Uhr Holger Posts: 8116 Nutzer |
Zitat:Die Antwort darauf erhält man, wenn man in der von Dir zitierten Aussage die Betonung auf „es sei denn es gibt nur konstante Sprünge und keine (Sprung-)Adresse wird an externe Libraries rausgegeben“ legt. Die Antwort lautet also, in der Praxis weiß er das eben nicht. Abgesehen davon ist Assembler nun mal keine Hochsprache. Da gilt, wenn Du eine Sequenz von Befehlen hinschreibst, dann wirst Du Deinen Grund dafür haben und der Compiler wird sie nicht eigenmächtig entfernen. -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
08.09.2014, 19:05 Uhr inq Posts: 445 Nutzer |
Zitat: Hm, haben wir da wirklich "erlaubten" Code vor uns? Macht das wirklich jemand so, einfach ein paar Bytes voraus? Im übrigen hast du ja "tab" referenziert, und a-f sind keine Labels (falls ich das korrekt verstehe, was das da oben soll ) Falls a-f jedoch Labels sind, hast du sie ja referenziert mit den "bra"s. Mal ein stupides Beispiel: RTS noch vor anfang: D.h. das Programm ist eigentlich gleich zuende. Ich weiß nicht, wie ein ASM assembliert, aber da muß doch irgendwo eine Sprungtabelle oder was auch immer sein. Wenn da überhaupt kein Sprung hinzeigt, was dann? Label tab gibt es noch, Label Anfang auch noch...aber nix springt dahin. *Edit: Nein, ich will euch nicht ärgern, ich versuche zu verstehen, wie das Assemblieren funktioniert. -- Config: A1200/30/50/FPU/SCSI/64MB, WinUAE/40/xx/xxMB, EUAE/40/25/xxMB, CDTV, CD32/SX32MK2/HD - AOS3.5 [ Dieser Beitrag wurde von inq am 08.09.2014 um 19:15 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
11.09.2014, 13:40 Uhr Holger Posts: 8116 Nutzer |
Zitat:Ja, so macht das jede Amiga-Library. Um die n-te Funktion aufzurufen, wird an die Adresse „Library-Basis - n*6“ gesprungen. Zitat:Es sind die bra-Befehle, die aus Sicht des Assemblers alle, bis auf den ersten, nicht benutzt werden. Aber, wie gesagt, das interessiert den Assembler nicht… -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
1 -2- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > BlitzBasic Decompiler? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |