Low Level C



  • Hallo,

    ich habe schon bei google geguckt habe aber nichts gefunden ⚠
    Gibt es eine Möglichkeit unter C zu Programmieren ohne dabei auf bekannte Header zurückzugreifen? Ich müsste nämlich auf diese Weise etwas Programmieren. Könnt Ihr mir vielleicht ein paar Links oder so geben 😕
    Danke im Vorraus



  • häh? c standard bibliothek oder was meinst du. ich werd aus deiner frage nicht schlau.



  • Ich suche was zur Low Level Programmierung.
    Hier darf man halt keine Header benutzen, also somit auch die C Standart Bibliothek



  • Sag mal genau was du machen willst und wirf nicht mit Begriffen ("Low Level") um dich, die du offensichtlich nicht richtig verstehst.



  • Ich will ein kleines OS schreiben (nur zu lernzwecken). Daher kann ich auch keine vorgefertigten Headern arbeiten.
    Also den Bootloader habe ich schon mal.



  • lilian schrieb:

    Ich will ein kleines OS schreiben (nur zu lernzwecken). Daher kann ich auch keine vorgefertigten Headern arbeiten.
    Also den Bootloader habe ich schon mal.

    Naja, du kannst die Header schon benutzten, wenn du die standard Bibliothek selber implementierst, oder portierst. Die Frage ist aber sehr schlecht gestellt. Das einzige, was du über Header einbindest, was du warscheinlich nicht benutzten kannst, sind Funktionen. Alles andere ist in C "von Alleine" vorhanden. Wenn du Links zur OS Entwicklung willst, es sind glaub ich auch noch welche in der Assembler FAQ. Aber was bitte willst du bitte über C-Header wissen???

    http://www.osdever.net/
    http://www.lowlevel.net.tc/ (Scheint gerade nicht zu klappen)
    http://www.mega-tokyo.com/forum/index.php?board=1;action=display;threadid=5390



  • Wie soll ich die Header dann erstellen? Um z.B Printf zu benutzen? Ich habe zwar gute C Kenntnisse aber irgendwie habe ich davon keine Ahnung 😮



  • lilian schrieb:

    Wie soll ich die Header dann erstellen? Um z.B Printf zu benutzen? Ich habe zwar gute C Kenntnisse aber irgendwie habe ich davon keine Ahnung 😮

    Du kannst die Funktion printf nicht benutzten. Du musst sie selber schreiben. printf ist Betriebssystemabhängig, also musst du sie selber implementieren. Du solltest also erstmal sowas wie einen Consolen Treiber schreiben.

    Btw. dein Bootloader, aktiviert der schon den Protected Mode (ich geh mal davon aus, dass du für einen x86 Prozessor programmierst)? Ohne Protected Mode wird das nämlich wohl ehr nix.

    Vielleicht schaust du dir mal die Beispiele unter Kernel an:
    http://www.osdever.net/downloads.php



  • Zu diesem Thema mal ne ähnliche Frage (wollte keinen neuen thread deswegen eröffnen.

    Wie programmiert man ein eigenes OS?
    muss ich das mit assembler machen, oder kann ich in C was screiben und dann als Binärdatei irgendwie zum booten benutzten (oder booten lassen über grub).

    Wäre dankbar über einige links zu vielelicht auch deutschen seiten die dieses thema behandeln



  • Storm.Xapek.de schrieb:

    Wie programmiert man ein eigenes OS?
    muss ich das mit assembler machen, oder kann ich in C was screiben und dann als Binärdatei irgendwie zum booten benutzten (oder booten lassen über grub).

    Wäre dankbar über einige links zu vielelicht auch deutschen seiten die dieses thema behandeln

    Schau dir die Links an, die ich gepostet hab. Lowlevel ist auf deutsch, aber leider gerade nicht erreichbar.

    Das einzige was du in Assembly programmieren musst ist der Bootloader, da der innerhalb von 512 Bytes Platz finden musst. Du kannst auch einfach GRUB nehmen und direkt mit einer höheren Programmiersprache anfangen. Den Kernel kannst du in jeder Sprache programmieren, die dir Binarys generieren kann, die ohne irgendwelche Bibliotheken auskommen (also auch ohne die Standard C Library). Zum Beispiel C oder Assembly.



  • Aha

    Und wie genau soll das dann funktionieren,
    ohne bibliotheken da hab ich ja nur den sprachumfang un mit dem kann ich nicht viel anfangen



  • Storm.Xapek.de schrieb:

    Und wie genau soll das dann funktionieren,
    ohne bibliotheken da hab ich ja nur den sprachumfang un mit dem kann ich nicht viel anfangen

    Du schreibst dir Treiber für Alles. Als beispiel: Wenn du Text ausgeben willst, dann, wenn du im Protected Modus bist, schreibst du an eine Bestimmte stelle im Speicher. Dieser Text wird dann vom Bios auf dem Bildschirm ausgegeben. Viele andere Sachen sprichst du über die IO Ports von deinem Prozessor an (z.B. die Tastatur).



  • Storm.Xapek.de schrieb:

    Aha

    Und wie genau soll das dann funktionieren,
    ohne bibliotheken da hab ich ja nur den sprachumfang un mit dem kann ich nicht viel anfangen

    Genau das ist auch der Grund warum man ein OS nicht in reinem C schreiben kann. Du must dir selber erstmal deine ganzen Funktionen schreiben. Zum Beispiel heißt die printf Version des Linux-Kernels printk. Du hast am Anfang nichts. Und um die mit der Peripherie oder der CPU deiner Architektur zu kommunizieren, brauchst du Assembler. Ohne Assembler kein OS.



  • Linux-Hobby-Entwickler schrieb:

    Storm.Xapek.de schrieb:

    Aha

    Und wie genau soll das dann funktionieren,
    ohne bibliotheken da hab ich ja nur den sprachumfang un mit dem kann ich nicht viel anfangen

    Genau das ist auch der Grund warum man ein OS nicht in reinem C schreiben kann. Du must dir selber erstmal deine ganzen Funktionen schreiben. Zum Beispiel heißt die printf Version des Linux-Kernels printk. Du hast am Anfang nichts. Und um die mit der Peripherie oder der CPU deiner Architektur zu kommunizieren, brauchst du Assembler. Ohne Assembler kein OS.

    Also erstmal in assembler die Grundfunktionen wie aus und eingabe machen, und die kann ich dann in C einbinden und benutzen, oder so ungefähr.

    Ich interessiere mich für dieses thema glaubst du es würde sich lohnen mal zu versuchen einen eigenen kernel zu schreiben (ich stell mir ddas so vor dsa ich am ende den kernel vom grub booten lasse und das der mir dann hallo welt ausgibt und dann vielleicht runterfährt) oder wäre das auch bei einem so kleinen ziel zuviel arbeitfür eine person alleine die fast keine ahnung davon hat?
    (ich wäre vielleicht bereit 1-2 tage arbeit dahineinzustecken, realistisch?)



  • Das wäre zu schaffen. Wie gesagt. Schau dir die Links an. Da findest du für das, was du vor hast schon massenweise Beispiele.

    Edit:
    Wenn du noch nicht mit Assembly vertraut bist, ist es sicher die Beste wahl, sich erstmal den Kernel von GRUB laden zu lassen. Ein bisschen Assembly brauchst du aber, wie hier eben schon erwähnt immer. Zum Beispiel, um die Interrupt Tabelle zu laden, oder IO Ports zu verwenden. Es kann also nicht schaden, sich auch damit auseinander zu setzten.



  • Ich hab jetzt mal einen eigenen thread im assemblerforum aufgemacht.
    Wer lust hat kann mir ja da von zeit zu zeit mal helfen
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1009265.html#1009265



  • steht irgendwo ab wann ich mein programm (offiziell) Betriebssystem nennen darf?
    also gibts da eine definition für, was ein betriebssystem alles können muss?





  • Für PC sowas zu machen ist ausserdem langweilig. Such dir doch lieber irgendeine exotische Plattform wenn du hardware nah rumfrickeln willst. Da kann dann eventuell sogar was nützliches bei rauskommen was anderen Leuten etwas nützt. Z.b. PSP ist ganz nett zum frickeln.



  • icepacker schrieb:

    steht irgendwo ab wann ich mein programm (offiziell) Betriebssystem nennen darf?
    also gibts da eine definition für, was ein betriebssystem alles können muss?

    Ein OS sollte schon mp3's abspielen können 😃


Anmelden zum Antworten