Seite 1 von 1
Neues Backend angekündigt
Verfasst: 24.04.2021 14:52
von gekkonier
Ich weiß ja nicht wie es euch geht, aber das ist definitiv die beste Ankündigung für Purebasic seit, nunja. Es ist nunmal die beste Ankündigung, da kann man gar nichts dagegen sagen.
https://www.purebasic.fr/blog/?p=486
Mit dieser Entscheidung ist mehr oder weniger Support für jede erdenkliche Plattform möglich, und C Compiler wurden von hunderten Menschen über Jahrzehnte stetig optimiert!
Weiters öffnet die einfachere Schnittstelle zu C Libs Welten!
Ich freu mich jedenfalls auf meine ersten Probierereien für die Raspberry Plattform!
Re: Neues Backend angekündigt
Verfasst: 24.04.2021 15:39
von Burstnibbler
Aus dem Link:
Hat das 'goto' irgendeinen tieferen Sinn, welcher aus dem Code-Beispiel nicht hervorgeht?

Re: Neues Backend angekündigt
Verfasst: 24.04.2021 15:40
von gekkonier
https://www.purebasic.fr/english/viewto ... 15#p569115
Ich gehe davon aus dass das aus der Übersetzung vom Syntaxast ins C passiert.
Für den, der in Purebasic schreibt und das C Backend verwenden will macht das aber nix - jeder dämliche C Compiler der halbwegs was am kasten hat (gcc gibt es seit Jahrzehnten und wird von hunderten Menschen optimiert.......) optimiert sowas einfach weg.
Re: Neues Backend angekündigt
Verfasst: 24.04.2021 20:33
von Sicro
gekkonier hat geschrieben: 24.04.2021 15:40Ich gehe davon aus dass das aus der Übersetzung vom Syntaxast ins C passiert.
Ja, er verwendet vermutlich den gleichen Syntaxbaum. Ich denke nicht, dass nun zwei unterschiedliche Parser im PB-Compiler sind.
Wenn man sich die PB-Compiler-ASM-Ausgabe des gezeigten PureBasic-Codes ansieht, ist zu sehen, dass er es dort auch so macht:
Code: Alles auswählen
; ProcedureReturn 6
MOV rax,6
JMP _EndProcedure1
; EndProcedure
_EndProcedureZero1:
XOR rax,rax
_EndProcedure1:
ADD rsp,48
POP r15
RET
Re: Neues Backend angekündigt
Verfasst: 24.04.2021 21:17
von gekkonier
Wie kann ich mir die ASM Ausgabe anzeigen lassen?
Danke!
Ich fand dies:
https://www.purebasic.fr/english/viewtopic.php?t=48298
Re: Neues Backend angekündigt
Verfasst: 24.04.2021 21:24
von gekkonier
viewtopic.php?f=2&t=25537&start=20
Hier geht es weiter...
Ich bin erstaunt dass ich das im Offtopic nun fand.
Das ist imho die größte Neuerung in der Purebasic Welt.
Re: Neues Backend angekündigt
Verfasst: 24.04.2021 21:42
von gekkonier
Sicro hat geschrieben: 24.04.2021 20:33
gekkonier hat geschrieben: 24.04.2021 15:40Ich gehe davon aus dass das aus der Übersetzung vom Syntaxast ins C passiert.
Ja, er verwendet vermutlich den gleichen Syntaxbaum. Ich denke nicht, dass nun zwei unterschiedliche Parser im PB-Compiler sind.
Ich bin sogar ziemlich sicher.
Aus
Code: Alles auswählen
Procedure.i gonzo()
If 3 > 2
ProcedureReturn 5
Else
ProcedureReturn 6
EndIf
EndProcedure
gonzo()
wird:
Code: Alles auswählen
; Procedure.i gonzo()
_Procedure0:
PUSH r15
PS0=64
XOR rax,rax
PUSH rax
SUB rsp,40
; If 3 > 2
; ProcedureReturn 5
MOV rax,5
JMP _EndProcedure1
; Else
JMP _EndIf1
_EndIf2:
; ProcedureReturn 6
MOV rax,6
JMP _EndProcedure1
; EndIf
_EndIf1:
; EndProcedure
_EndProcedureZero1:
XOR rax,rax
_EndProcedure1:
ADD rsp,48
POP r15
RET
Es hängt offensichtlich damit zusammen dass man innerhalb einer Procedure an mehreren Positionen "returnen" kann.
Deshalb wird die Sprungmarke verwendet.
Re: Neues Backend angekündigt
Verfasst: 25.04.2021 01:26
von Sicro
gekkonier hat geschrieben: 24.04.2021 21:17Wie kann ich mir die ASM Ausgabe anzeigen lassen?
Wenn du eine komfortable Lösung suchst, siehe meine Signatur (Download-Link) und danach im Pfad: PB-CodeArchiv-Rebirth/PB-IDE-Tools/DisplayASMCode.pb (kompilieren und Kommentare im Code lesen).
gekkonier hat geschrieben: 24.04.2021 21:42Es hängt offensichtlich damit zusammen dass man innerhalb einer Procedure an mehreren Positionen "returnen" kann.
Deshalb wird die Sprungmarke verwendet.
Genau. Im ASM-Code wäre vermutlich auch möglich gewesen, mehrmals "RET" zu verwenden, anstatt der Sprungmarken - zumindest beim C-Code wäre mehrmaliges "return" möglich.
Re: Neues Backend angekündigt
Verfasst: 25.04.2021 19:11
von Burstnibbler
Ah, ok. Danke für die Infos!
