Purebasic 6 Beta 6 Frage zum C-Backend
-
- Beiträge: 50
- Registriert: 29.03.2013 12:25
- Wohnort: Eisenach
Purebasic 6 Beta 6 Frage zum C-Backend
Hallo !
Auf der Purebasic-Seite wird seit einiger Zeit von einer neuen Betaversion 6 gesprochen.
Dabei geht es um ein C-Backend. Der Begriff wird für Nichtinformatiker nicht weiter erklärt,
der Sinn eines solchen Backends scheint aber zu sein, das der Purebasic-Programmcode
in die Programmiersprache C überführt wird. Um der ständig wachsenden Zahl neuer Programmier-
sprachen für immer neue Plattformen gewachsen zu sein, und für eben diese neuen Plattformen
mit PB programmieren zu können, wurde das C-Backend geschaffen. So stelle ich es mir vor.
Dazu ist es sicher deshalb entwickelt worden, weil es für alle diese Plattformen sicher auch
C-Compiler gibt. Dann könnte das PB-programm mit der Zwischenstufe C-Backendergebnis
mit dem C-Compiler dieser Plattform für dieselbe zur App werden. Ist das noch so richtig ?
Es ist ja eine gute Sache, wenn ich mit Purebasic weiter auch für andere Plattformen pro-
grammieren kann, ohne mich immer in neue Programmiersprachen wie Swift,Xojo usw.
einarbeiten zu müssen. Das richtige dabei zu finden ist für den Nichteingeweihten sowieso
Glückssache - mir reichen die Möglichkeiten von Purebasic. Auf einer Internetseite wurden
die Compilierzeiten für Compiler VC++ und GCC verglichen. Meine Frage ist nun: woher
kommen die Quelldateien für diese C-Compiler (c und h). Bei der Installation der neuen Beta-
Versionen kann man nach bestimmten Einstellungen zwischen pbcompiler.exe und pbcompilerc.exe
(normaler x86-Compiler oder Purebasic 6.00 Beta 6 - C Backend (Windows x86)) wählen.
Der Backendcompiler ergibt aber auch nur eine EXE-Datei des Programmcodes - von Quelldateien
für C-Comiler keine Spur. Es wäre doch einmal an der Zeit, den Weg aufzuzeigen und nicht vielleicht
irgendwo versteckt, wie das Alleinstellungsmerkmal C-Backend von Purebasic seinen Dienst tut.
Wo kamen die Quelldateien her, mit denen die Geschwindigkeitsversuche mit VC++ und GCC
gemacht wurden ? In welchem Verzeichnis werden sie erzeugt ? Wenn so etwas entwickelt
und beworben wird, darf das nicht nur für ein paar Spezialisten durchsichtig sein und
muß in die vordere Reihe.
Auf der Purebasic-Seite wird seit einiger Zeit von einer neuen Betaversion 6 gesprochen.
Dabei geht es um ein C-Backend. Der Begriff wird für Nichtinformatiker nicht weiter erklärt,
der Sinn eines solchen Backends scheint aber zu sein, das der Purebasic-Programmcode
in die Programmiersprache C überführt wird. Um der ständig wachsenden Zahl neuer Programmier-
sprachen für immer neue Plattformen gewachsen zu sein, und für eben diese neuen Plattformen
mit PB programmieren zu können, wurde das C-Backend geschaffen. So stelle ich es mir vor.
Dazu ist es sicher deshalb entwickelt worden, weil es für alle diese Plattformen sicher auch
C-Compiler gibt. Dann könnte das PB-programm mit der Zwischenstufe C-Backendergebnis
mit dem C-Compiler dieser Plattform für dieselbe zur App werden. Ist das noch so richtig ?
Es ist ja eine gute Sache, wenn ich mit Purebasic weiter auch für andere Plattformen pro-
grammieren kann, ohne mich immer in neue Programmiersprachen wie Swift,Xojo usw.
einarbeiten zu müssen. Das richtige dabei zu finden ist für den Nichteingeweihten sowieso
Glückssache - mir reichen die Möglichkeiten von Purebasic. Auf einer Internetseite wurden
die Compilierzeiten für Compiler VC++ und GCC verglichen. Meine Frage ist nun: woher
kommen die Quelldateien für diese C-Compiler (c und h). Bei der Installation der neuen Beta-
Versionen kann man nach bestimmten Einstellungen zwischen pbcompiler.exe und pbcompilerc.exe
(normaler x86-Compiler oder Purebasic 6.00 Beta 6 - C Backend (Windows x86)) wählen.
Der Backendcompiler ergibt aber auch nur eine EXE-Datei des Programmcodes - von Quelldateien
für C-Comiler keine Spur. Es wäre doch einmal an der Zeit, den Weg aufzuzeigen und nicht vielleicht
irgendwo versteckt, wie das Alleinstellungsmerkmal C-Backend von Purebasic seinen Dienst tut.
Wo kamen die Quelldateien her, mit denen die Geschwindigkeitsversuche mit VC++ und GCC
gemacht wurden ? In welchem Verzeichnis werden sie erzeugt ? Wenn so etwas entwickelt
und beworben wird, darf das nicht nur für ein paar Spezialisten durchsichtig sein und
muß in die vordere Reihe.
- NicTheQuick
- Ein Admin
- Beiträge: 8675
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Purebasic 6 Beta 6 Frage zum C-Backend
Du kannst dir auch schon beim alten Purebasic-Compiler mit dem Flag -c, --commented oder /COMMENTED den generierten Assembler-Code ausgeben lassen. Siehe auch in der Hilfe unter Referenz-Handbuch -> Allgemeine Themen -> Benutzung des SHELL-Compilers.
Das geht so auch mit C-Code.
Im Hintergrund erstellt Purebasic im %temp%-Verzeichnis unter Windows einen Ordner mit dem Namen "PurebasicXXXXX", wobei die X für Ziffern stehen. Und darin enthalten sind alle Dateien, die zum Kompilieren notwendig sind. Allerdings verschwinden die auch ganz schnell wieder, wenn das Kompilieren abgeschlossen ist. Deswegen ist --commented Parameter die bessere Wahl.
Das geht so auch mit C-Code.
Im Hintergrund erstellt Purebasic im %temp%-Verzeichnis unter Windows einen Ordner mit dem Namen "PurebasicXXXXX", wobei die X für Ziffern stehen. Und darin enthalten sind alle Dateien, die zum Kompilieren notwendig sind. Allerdings verschwinden die auch ganz schnell wieder, wenn das Kompilieren abgeschlossen ist. Deswegen ist --commented Parameter die bessere Wahl.
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: Purebasic 6 Beta 6 Frage zum C-Backend
Wenn mein Programm mit den Compiler Optionen C-Backend und Optimize Generated Code doppelt so schnell läuft, muß ich dann die Unterschiede im Assembler Code oder den Inhalt von purebasic.c kennen? Wenn ja empfehle ich das englischsprachige PB Forum seit Mai letzten Jahres.
Bitte stelle Deine Fragen, denn den Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im Universum.
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
- stab
- Beiträge: 92
- Registriert: 24.02.2006 16:09
- Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
- Wohnort: Hardt
- Kontaktdaten:
Re: Purebasic 6 Beta 6 Frage zum C-Backend
Hallo, gibt es im C-Backend eigentlich jetzt die Möglichkeit, direkt C-Code einzufügen?
Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Re: Purebasic 6 Beta 6 Frage zum C-Backend
Ja, das geht ...
Beispiel mit builtin funktion von GCC
Beispiel mit builtin funktion von GCC
Code: Alles auswählen
Procedure.l BSWAP32(Value.l)
CompilerIf #PB_Compiler_Backend = #PB_Backend_Asm
!MOV eax, dword[p.v_Value]
!BSWAP eax
!MOV dword[p.v_Value], eax
CompilerElse
!v_value = __builtin_bswap32(v_value);
CompilerEndIf
ProcedureReturn Value
EndProcedure
a.l = $12345678
b.l = BSWAP32(a)
Debug Hex(b, #PB_Long)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- stab
- Beiträge: 92
- Registriert: 24.02.2006 16:09
- Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
- Wohnort: Hardt
- Kontaktdaten:
Re: Purebasic 6 Beta 6 Frage zum C-Backend
OK?!
Danke mk-soft, aber für mich sieht das immer noch sehr nach assembler-syntax aus. 2 register werden getauscht.
Ich dachte eher an sowas:
CompilerIf #PB_Compiler_Backend = #PB_Backend_C
?printf("Hello World\n");
Danke mk-soft, aber für mich sieht das immer noch sehr nach assembler-syntax aus. 2 register werden getauscht.
Ich dachte eher an sowas:
CompilerIf #PB_Compiler_Backend = #PB_Backend_C
?printf("Hello World\n");
Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Re: Purebasic 6 Beta 6 Frage zum C-Backend
Nicht genau hin geschaut ...
Oberer Teil ASM und unterer Teil C
Oberer Teil ASM und unterer Teil C
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- stab
- Beiträge: 92
- Registriert: 24.02.2006 16:09
- Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
- Wohnort: Hardt
- Kontaktdaten:
Re: Purebasic 6 Beta 6 Frage zum C-Backend
Ja stimmt, ich hatte nur den ASM Teil im Blick, weil bei mir dieser Teil durchlaufen wird.
Unter welchen Umständen wird denn "CompilerElse" ausgeführt?
Müssen wir aber von meiner Seite auch nicht vertiefen.
War eher eine allgemeine Frage.
Vielen Dank
Unter welchen Umständen wird denn "CompilerElse" ausgeführt?
Müssen wir aber von meiner Seite auch nicht vertiefen.
War eher eine allgemeine Frage.
Vielen Dank
Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Re: Purebasic 6 Beta 6 Frage zum C-Backend
Wenn es nicht ASM ist, was bleibt denn übrig ...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- stab
- Beiträge: 92
- Registriert: 24.02.2006 16:09
- Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
- Wohnort: Hardt
- Kontaktdaten:
Re: Purebasic 6 Beta 6 Frage zum C-Backend
Vielleicht habe ich ein Brett .....
PB 6.00 Beta 8
ASM
78563412
PB 6.00 Beta 8
Code: Alles auswählen
Procedure.l BSWAP32(Value.l)
CompilerIf #PB_Compiler_Backend = #PB_Backend_Asm
!MOV eax, dword[p.v_Value]
!BSWAP eax
!MOV dword[p.v_Value], eax
Debug "ASM"
CompilerElse
!v_value = __builtin_bswap32(v_value);
Debug "C"
CompilerEndIf
ProcedureReturn Value
EndProcedure
a.l = $12345678
b.l = BSWAP32(a)
Debug Hex(b, #PB_Long)
78563412
Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."
Wer lügt hier wirklich und wer sagt die Wahrheit?
_________________________________________
286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5