Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

C, C++ und Pascal in Freebasic?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 20.06.2012, 23:29    Titel: C, C++ und Pascal in Freebasic? Antworten mit Zitat

Ich weiß, dass Freebasic ja Assemplercode verarbeiten kann. Aber wie sieht es mit C, C++ und Pascal aus? Kann Freebasic diese Sprachen auch verarbeiten? Warscheinlich nicht oder? Wird es mal einen Compiler geben der dann C, C++ oder Pascalbefehle verarbeiten kann?

Wie gut kann Frebasic etwas mit Assemplercode anfangen?

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 20.06.2012, 23:36    Titel: Antworten mit Zitat

Der Grund, warum man Assemblercode in FreeBasic-Code einbetten kann, ist dass als "Zwischenschritt" vor der eigentlichen EXE-Datei eine Assemblerdatei erzeugt wird. Im Prinzip ist Assembler ja hauptsächlich eine "menschenlesbare Form" des Maschinencodes, es lässt sich quasi 1:1 in Binärcode übersetzen UND UMGEKEHRT (Bezeichner gehen verloren, aber die Logik bleibt erhalten - mal einfach gesagt). Aus diesem Grund ist es immer am einfachsten, wenn ein Compiler Assemblercode erstellt der dann von einem Assembler in Binärcode übersetzt wird (was letztenendes in so einer EXE-Datei drin ist^^).

Normalerweise geht es also BAS -> ASM -> O -> EXE (das O hier ist noch Objektcode, den ich jetzt aber nicht näher erkläre)

Mit -gen gcc (was den C-Emitter aktiviert) geht es BAS -> C -> ASM -> O -> EXE.

In beiden Fällen gibts eine ASM-Datei dazwischen mal. Du kannst diese sehen wenn du mit dem Switch -R kompilierst.

Wenn du nun in eine BAS-Datei ASM-Code einbettest, sagt der FB-Compiler einfach "Herr Assembler, kümmern Sie sich darum!". Er gibt den Code einfach (fast) 1:1 an den Assembler weiter.

Mit C wäre es theoretisch auch noch möglich, aber nur wenn der C-Emitter verwendet wird. Diese Funktion gibt es aber noch nicht, und ich glaube es wird sie auch nie geben, weil das einerseits mir etwas unsinnig erschiene und andererseits sicher irgendwie problematisch wäre. Vermute ich aber einfach mal.

C++ und Pascal werden da wohl überhaupt gar nicht gehen, da diese Sprachen in der "Kompilier-Sprachen-Kette" gar nicht vorkommen. lächeln

mfG Cherry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.06.2012, 00:02    Titel: Antworten mit Zitat

Cherry hat Folgendes geschrieben:


C++ und Pascal werden da wohl überhaupt gar nicht gehen, da diese Sprachen in der "Kompilier-Sprachen-Kette" gar nicht vorkommen. lächeln

Solange man den Code als Bibliothek einbinden möchte und kompatible Objektformate u.ä. benutzt werden, ist es natürlich möglich. Wobei dann natürlich der Linker den Code verarbeitet, nicht der FBC.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.06.2012, 10:51    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Cherry hat Folgendes geschrieben:


C++ und Pascal werden da wohl überhaupt gar nicht gehen, da diese Sprachen in der "Kompilier-Sprachen-Kette" gar nicht vorkommen. lächeln

Solange man den Code als Bibliothek einbinden möchte und kompatible Objektformate u.ä. benutzt werden, ist es natürlich möglich. Wobei dann natürlich der Linker den Code verarbeitet, nicht der FBC.

Das ist schon was (vollkommen) anders als die Möglichkeit verschiedene Sprachen zu mischen.
Die GCC enthält ja bekanntermaßen C, C++, Objective C und Fortran Compiler, und obwohl das alles in der gleichen Suite drin ist, ist es nichtmal dort möglich C und Fortran (bspw.) zu mischen.
C und C++ kann man mischen, weil beide vom gleichen Compiler gehandhabt werden (liegt ja auch nahe).

Assembler geht nur deswegen, weil es praktisch keine Interdependenzen zwischen dem Assemblersnippet und deinem restlichen Programm gibt.
Du kannst schließlich nur auf Symbole zugreifen und das Code-Snippet kann direkt in die Ausgabedatei (Assembler) eingebettet werden, was mit C oder Fortran schlicht nicht geht.



Ich frage mich allerdings, warum du C in FreeBasic schreiben willst. Vom Sprachumfang her ist FreeBasic eine geringe Übermenge von C mit etwas mehr Komfort, alles was in C geht (außer Mehrfachdefinitionen), geht auch in FB.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 21.06.2012, 14:07    Titel: Antworten mit Zitat

Zitat:
Ich frage mich allerdings, warum du C in FreeBasic schreiben willst. Vom Sprachumfang her ist FreeBasic eine geringe Übermenge von C mit etwas mehr Komfort, alles was in C geht (außer Mehrfachdefinitionen), geht auch in FB.


Ich habe im Internet einen Quellcode gefunden der vermutlich in C++ geschrieben ist. Jetzt dachte ich an eine einfache elegante Lösung ohne den Quellcode nach Freebasic umschreiben zu müssen.
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.06.2012, 15:36    Titel: Antworten mit Zitat

Öh schreib halt nen kleinen C-Wrapper und linke den mit deinem Programm zusammen...!?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.06.2012, 16:28    Titel: Antworten mit Zitat

28398 hat Folgendes geschrieben:

Das ist schon was (vollkommen) anders als die Möglichkeit verschiedene Sprachen zu mischen.

Würde aber sogar genau tun, was er wollte in diesem Fall. Aber ja, in FB neu schreiben wäre vermutlich sinnvoller für eine einzelne Funktion.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz