Seite 1 von 1

Compiler ASM oder C-Backend - Was nutzen ?

Verfasst: 24.09.2024 15:06
von TheCube
Vielleicht nicht völlig offtopic, aber trotzdem wohl am besten hier:

Das C-Backend funktioniert ja so problemlos wie das ASM-Backend und soll (zumeist) schnelleren Code produzieren.
Die übertrieben aufgeblähten EXE des 6.10 C-Backend sind Vergangenheit, bei meinen Sachen liegen ASM und C quasi gleichauf.

Meine Frage daher:
Gibt es noch Gründe den ASM-Compiler zu nutzen ? Hat er in gewissen Anwendungsfällen noch Vorteile ?

Re: Compiler ASM oder C-Backend - Was nutzen ?

Verfasst: 24.09.2024 15:15
von NicTheQuick
Meiner Meinung nach hat der ASM-Compiler keine Vorteile mehr. Du kannst nur eventuell bestimmte Codeschnipsel nicht mehr nutzen, die ASM nutzen.

Re: Compiler ASM oder C-Backend - Was nutzen ?

Verfasst: 24.09.2024 19:24
von STARGÅTE
Für große Projekte (viele Codezeilen) hat der ASM-Compiler den Vorteil deutlich schneller zu kompilieren als der C-Compiler.
So spart man in der Entwicklungsphase Wartezeit beim häufigen Testen von Codes.

Re: Compiler ASM oder C-Backend - Was nutzen ?

Verfasst: 24.09.2024 23:15
von TheCube
Danke für eure Meinungen ...

Nebenbei ist es hier und da noch nützlich per Compilerwechsel false positives einer Virenscanner-Heuristik (Büro-PC) zu umgehen. :freak:
(Stufe2 ist dann bei mir per sinnlosen IncludeBinary von irgendwas seine EXE aufzublasen)

Re: Compiler ASM oder C-Backend - Was nutzen ?

Verfasst: 25.09.2024 09:06
von jacdelad
Ich nutze meistens ASM zum Debuggen und C fürs Release. Wie Nic geschrieben hat gibt es aber Codeteile, die nur mit einem Backend funktionieren, da ist man dann festgelegt.

Re: Compiler ASM oder C-Backend - Was nutzen ?

Verfasst: 01.11.2024 16:06
von SMaag
SSE Optimierungen sind für mich viel einfacher in ASM zu machen als in C

Assembler und C-BAcken hat immer noch einige Differenzen!
Ein Beispiel ist die ABS() Funktion. In ASM funktioniert das für alle Integerwerte bis 64Bis.
Es wird direkt der ABS() Befehl der FPU verwendet, welche mit 80Bit Floats arbeitet, so dass kein Bit der 64 Bit verloren geht.

Im C-Backend geht das nur bis 52Bit., da C den ABS() Befehl zu einem SSE Befehl optimiert, was schneller ist, jedoch nur
mit 64Bit Float arbeitet, die eben nur 52Bit Integer ohne Verlust darstellen könnnen.
https://www.purebasic.fr/english/viewto ... SQ#p615366

Weiterhin hat das C-Backend immer noch einen Bug bei hirarchischen Strukturen mit virtuellen Arrays von 0 Länge in einer StructureUnion
https://www.purebasic.fr/english/viewtopic.php?t=85139