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:

Systemspezifische Compiler

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 26.12.2007, 14:51    Titel: Systemspezifische Compiler Antworten mit Zitat

Zitat aus diesem Thread (der inzwischen glücklicherweise geschlossen wurde):
http://forum.qbasic.at/viewtopic.php?p=71832#71832
Wolfi30 hat Folgendes geschrieben:
Hi!

Es sollte bekannt sein, das bei Windows-Compilern alle genutzten Befehle intern auf die WINAPI zugreifen(user32,gdi32,kernel32,advapi32) und unter DOS intern die sogenannten Interruptfunktionen(int 21h(DOS), int 13h(Laufwerke), int 10h(Grafik-Bios)) benutzt werden!

Ohne API würde nix gehen, da man sich sonst alles selbst schreiben müsste von A-Z, was eine Menge Arbeit kosten würde......

Deswegen sind solche Fragen ob es möglich wäre ein Betriebssystem zu schreiben mit Freebasic(Windows,DOS,Linux) überflüssig, da die Befehle intern alle auf das entsprechende API des Systems gelinkt werden!

Benutzt mal einen Debugger wie OLLYDBG dann seht ihr mal was da alles an API-Befehlen benutzt werden in eurer Anwendung!

Das verstehe ich nun wieder nicht: Soweit ich weiß, muß der Boot-Loader systemunabhängig, also in Assembler programmiert sein. Danach kann man den Rest in C/C++ oder anderen Sprachen schreiben. Das muß dann aber compiliert werden, und die Compiler sind (nach Wolfi30) systemgebunden. Das kann aber nicht funktionieren, wenn man auf dem selbstgeschriebenen Boot-Loader ein eigenes System aufbauen will (was immerhin hin und wieder gemacht wird).
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 26.12.2007, 15:02    Titel: Antworten mit Zitat

Hallo,

bei der Programmierung eines solchen Bootloaders darf natürlich nur auf BIOS-Interrupts zurückgegriffen werden. Den DOS-spezifischen INT21h darf man beispielsweise in dem Fall nicht benutzen. Compiler für ein bestimmtes Betriebssystem machen vom API des Betriebssystems aber bei den erzeugten Binärdateien Gebrauch. Daher wird das Grundgerüst in Assembler aufbauend auf BIOS-Ints geschrieben und nicht mit einem systemabhängigen Compiler erstellt. Ich kenn mich mit Assembler und Bootloadern allerdings auch nicht besonders aus, da müsste schon einer der OS-/Lowlevel-Programmierer hier wie Mao Näheres schreiben. zwinkern

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Wolfi30



Anmeldungsdatum: 17.08.2007
Beiträge: 38

BeitragVerfasst am: 26.12.2007, 18:15    Titel: Antworten mit Zitat

Hi!

Zitat:
Das verstehe ich nun wieder nicht: Soweit ich weiß, muß der Boot-Loader systemunabhängig, also in Assembler programmiert sein. Danach kann man den Rest in C/C++ oder anderen Sprachen schreiben. Das muß dann aber compiliert werden, und die Compiler sind (nach Wolfi30) systemgebunden. Das kann aber nicht funktionieren, wenn man auf dem selbstgeschriebenen Boot-Loader ein eigenes System aufbauen will (was immerhin hin und wieder gemacht wird).


Hab das vielleicht zu einfach dargestellt!

Soweit stimmt das! Der Compiler erzeugt die ausführende Datei aber nicht in einem Ruck sondern braucht noch einen Linker, der die compilierte Datei wiederum in ein dem System bekanntes Endformat wandelt z.B *.exe(Systemgebunden(DOS+WIN))
Der Schritt vor dem linken ist noch systemunabhängig!

Deswegen wird C++ gern als systemunabhängig dargestellt, da der Compiler im 2-pass-Verfahren arbeitet(erst compiliert und dann systemspezifisch linkt), gegenüber den Basic oder Pascal-Compilern die meist als 1-pass Compiler in einem Ruck alles erzeugen.

Gruß Wolfi
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 26.12.2007, 20:05    Titel: Antworten mit Zitat

@Wolfi30
Aha, danke. Wenn man also FreeBasic anweist, nur eine .obj-Datei (vorkompilierte Datei ohne Link) zu erstellen, könnte man die mittels eines anderen Linkers auch in ein anderes System übertragen bzw. ein Betriebssystem (außer Boot-Loader cool ) damit erstellen- richtig?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 26.12.2007, 20:08    Titel: Antworten mit Zitat

Theoretisch könntest du jede Programmiersprache nehmen, von der Definition her. Du bräuchtest bloß die Möglichkeit, dem Compiler mitzuteilen, dass du systemunabhängig bleiben möchtest (was z.B. beim C(++)-Compiler der GCC möglich ist). Oder eine andere Möglichkeit, den reinen Code später zu extrahieren (so kann man mit gewissem Aufwand auch in Delphi ein Betriebssystem oder sagen wir mal Stand-alone-Hello-World schreiben, so schon gesehen lächeln).
Wichtig ist wie gesagt nur, dass keine system-spezifischen Funktionen benutzt werden. (Datei lesen, Fenster öffnen, Grafik zeichnen, auch Text ausgeben - z.B.)
Das "Problem" ist (zumindest auf der x86 Architektur (wie ist's woanders?)), dass der reine Bootloader nur maximal 512 Bytes, abzüglich Boot-Signatur nur 510 Bytes groß sein darf.
Das lässt sich mit Assembler noch am Besten erreichen.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolfi30



Anmeldungsdatum: 17.08.2007
Beiträge: 38

BeitragVerfasst am: 26.12.2007, 21:37    Titel: Antworten mit Zitat

Hi!

Zitat:
@Wolfi30
Aha, danke. Wenn man also FreeBasic anweist, nur eine .obj-Datei (vorkompilierte Datei ohne Link) zu erstellen, könnte man die mittels eines anderen Linkers auch in ein anderes System übertragen bzw. ein Betriebssystem (außer Boot-Loader cool ) damit erstellen- richtig?


Richtig! Du mußt dem Compiler am linken hindern und einen Linker benutzen für das eigene OS zwinkern

Zitat:
Das "Problem" ist (zumindest auf der x86 Architektur (wie ist's woanders?)), dass der reine Bootloader nur maximal 512 Bytes, abzüglich Boot-Signatur nur 510 Bytes groß sein darf.
Das lässt sich mit Assembler noch am Besten erreichen.


Der Bootloader muß meines Wissens nach an einer festgelegten Startadresse, die das Bios vorgibt, stehen und die kann man nur in einem Assembler definieren!

Gruß Wolfi
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 26.12.2007, 22:33    Titel: Antworten mit Zitat

Der Bootloader steht immer im ersten Sektor des Boot-Mediums. Das BIOS lädt diesen, schaut nach der Boot-Signatur (Byte 511 und 512), Word 0xAA55.
Wenn die Boot-Signatur gefunden wurde erkennt das BIOS den Bootloader als Bootloader an,lädt ihn an Adresse 0x0000:0x7C00 des Hauptspeichers und springt anschließend dorthin. Alles Weitere ist Aufgabe des Bootloaders.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Wolfi30



Anmeldungsdatum: 17.08.2007
Beiträge: 38

BeitragVerfasst am: 26.12.2007, 22:45    Titel: Antworten mit Zitat

Hi!

Was man hier auch nachlesen kann!

http://lowlevel.brainsware.org/wiki/index.php/Eigener_Boot_Record

Gruß Wolfi
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 26.12.2007, 23:43    Titel: Antworten mit Zitat

(fast) alles klar! Danke für die informativen Antworten. Wieder was dazugelernt lächeln
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Computer-Forum 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