Neues Backend angekündigt

Ankündigungen PureBasic oder die Community betreffend.
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Neues Backend angekündigt

Beitrag 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!
Burstnibbler
Beiträge: 55
Registriert: 04.10.2008 12:10

Re: Neues Backend angekündigt

Beitrag von Burstnibbler »

Aus dem Link:

Code: Alles auswählen

  r=6;
  goto end;
  end:
  return r;
Hat das 'goto' irgendeinen tieferen Sinn, welcher aus dem Code-Beispiel nicht hervorgeht? :?
Homer sagt: „In einer Welt die Verrückt spielt, ist nur ein Irrer wahrlich Geisteskrank.“
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: Neues Backend angekündigt

Beitrag 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.
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Neues Backend angekündigt

Beitrag 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
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: Neues Backend angekündigt

Beitrag von gekkonier »

Wie kann ich mir die ASM Ausgabe anzeigen lassen?
Danke!

Ich fand dies: https://www.purebasic.fr/english/viewtopic.php?t=48298
Zuletzt geändert von gekkonier am 24.04.2021 21:32, insgesamt 1-mal geändert.
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: Neues Backend angekündigt

Beitrag 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.
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: Neues Backend angekündigt

Beitrag 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.
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Neues Backend angekündigt

Beitrag 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.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Burstnibbler
Beiträge: 55
Registriert: 04.10.2008 12:10

Re: Neues Backend angekündigt

Beitrag von Burstnibbler »

Ah, ok. Danke für die Infos! :allright:
Homer sagt: „In einer Welt die Verrückt spielt, ist nur ein Irrer wahrlich Geisteskrank.“
Antworten