Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: bscreator am 14. November 2009, 09:28

Titel: C in Real-Mode
Beitrag von: bscreator am 14. November 2009, 09:28
Hi,

kann ich einen C-Kernel eigentlich auch im Real-Mode starten ?

Grüsse,
bsc
Titel: Re: C in Real-Mode
Beitrag von: kevin am 14. November 2009, 09:45
Ja, theoretisch schon. C sagt nichts über die Wortbreite oder Speicherschutz aus.

Du brauchst nur einen C-Compiler, der auch 16-Bit-Code ausgeben kann; gcc kann das nicht wirklich. Falls du unter Windows arbeitest, wird Borland Turbo C (ein DOS-Compiler eben und daher Real Mode) oft genannt. Unter Linux gibt es zum Beispiel bcc, der oft im Paket dev86 zu finden ist.
Titel: Re: C in Real-Mode
Beitrag von: bscreator am 15. November 2009, 11:14
Aber warum kann ich keinen "normalen" C-Compiler, wie GCC nehmen und einen kleinen Kernel programmieren und diesen dann nach dem Bootsektor "anspringen" ?
Liegt es daran, dass man im Real-Mode nur aufgrund der 16-Bit breiten Register auch nur 16-Bit-Code ausführen kann ?

Nochwas:
Gibts auch nen kostenlosen 16-Bit C-Compiler für Windows ?
Danke,
bsc
Titel: Re: C in Real-Mode
Beitrag von: XanClic am 15. November 2009, 12:25
Man kann im Real Mode auch 32-Bit-Register verwenden, das ist nicht das Problem. Das Problem ist nur, dass der Real Mode erstens den Speicher anders als der Protected Mode anspricht (logisch) und dass "normale" Compiler für den Protected Mode sowas natürlich nicht berücksichtigen. Zweitens ist es im Real Mode allgemein so, dass man nur 16-Bit-Code ausführen kann, es ist eben ein 16-Bit-Modus.
Titel: Re: C in Real-Mode
Beitrag von: kevin am 15. November 2009, 12:37
Aber warum kann ich keinen "normalen" C-Compiler, wie GCC nehmen und einen kleinen Kernel programmieren und diesen dann nach dem Bootsektor "anspringen" ?
Weil gcc einen Codegenerator für Protected-Mode- und Long-Mode-Code hat, aber nicht für den Real Mode. Vor allem fehlt Unterstützung für Segmentierung. Und ohne die wird es im Real Mode ein bisschen schade...

Zitat
Gibts auch nen kostenlosen 16-Bit C-Compiler für Windows ?
Wie gesagt, Borland Turbo C. Das gibt es mittlerweile ganz offiziell auf deren Homepage als Freeware zum Runterladen.
Titel: Re: C in Real-Mode
Beitrag von: erik.vikinger am 15. November 2009, 13:58
Hallo,


Der OpenWatcom-Compiler könnte auch eine Alternative sein. Der unterstützt Real-Mode, sogar mit 32Bit-Befehlen (also auf 386 und höher), Protected-Mode ohne aber auch mit Segmentierung (FAR-Pointer sind leider etwas umständlich) und alles mögliche andere auch. Zusätzlich gibts ne brauchbare IDE für Windows.

Das Problem heutiger Compiler ist das diese ein Flat-Memory-Model annehmen und entsprechenden Code generieren, der Real-Mode ist aber eben nicht flach sondern segmentiert  und daher ist es schwierig einen solchen Compiler für den Real-Mode umzustricken.

Der BCC ist übrigens wirklich gut für nur Real-Mode.


Grüße
Erik