C++ dateien booten????



  • mcdgt schrieb:

    also um das mal zum ende zu führe ich kann per bootloader problem eine kompilierrte C++ ausführen lassen ohne Probelem?

    Da Dir anscheinend ein paar wichtige Basics fehlen, würde ich das "ohne Problem" nicht annehmen.

    Wenn Du keinen besonderen Linker hast, muß der Bootloader in der Lage sein, normale DOS-oder Windows Executables zu laden, je nachdem, was Du da hast. Vieleicht kann Dir gcc da aber weiter helfen.

    Bedenke auch, daß der Intelprozessor nach dem Einschalten im 16-Bit Modus läuft. Du mußt die CPU auch auf das richtige Format bringen.

    Das EXE-File darf auf keinerlei (ich wiederhole auf rein gar nichts) aufsetzten außer dem BIOS, das in dem Rechner steckt. Also kein .NET, kein Windows, kein DOS nichts und überhaupt nichts. Bedenke, daß die Standard Library der meisten Compiler jedoch hiervon regen Gebrauch machen.

    So ich hoffe, ich habe nichts vergessen.

    Ich vergaß: Linux, Mac OS X, OS/9, OS/2, Solaris, BSD etc. sind natürlich auch tabu.

    mfg Martin



  • Endlich mal ne ordentliche Antowrt^^ Das Programm wird ein Textkommando Programm. Also sole befehle wie system(blablabla); wird logischer nicht gehen oder^^



  • mcdgt schrieb:

    Endlich mal ne ordentliche Antowrt^^ Das Programm wird ein Textkommando Programm. Also sole befehle wie system(blablabla); wird logischer nicht gehen oder^^

    Nichts ist nichts und sonst nichts und das gilt auch für system().

    mfg Martin



  • ok nächste frage wie greife ich per c++ auf eine datei im ordner oder in neben ordner zu ohne system()????



  • Geniess deine Zeit besser anders als über diese Dinge nachzudenken. 🕶



  • mcdgt schrieb:

    ok nächste frage wie greife ich per c++ auf eine datei im ordner oder in neben ordner zu ohne system()????

    std::ifstream ??????



  • mcdgt schrieb:

    ok nächste frage wie greife ich per c++ auf eine datei im ordner oder in neben ordner zu ohne system()????

    Das hängt vom Filesystem ab. FAT ist recht simpel implementiert, NTFS ist schon etwas schwieriger. Schau am besten in die Quellen von Linux, dort kannst Du finden, wie diese Dateisysteme aufgebaut sind.

    Ich hoffe Du erwartest jetzt nicht, hier eine Beschreibung der Dateisysteme, das führt entschieden zu weit.

    mfg Martin



  • l'abra d'or schrieb:

    mcdgt schrieb:

    ok nächste frage wie greife ich per c++ auf eine datei im ordner oder in neben ordner zu ohne system()????

    std::ifstream ??????

    und dann



  • l'abra d'or schrieb:

    mcdgt schrieb:

    ok nächste frage wie greife ich per c++ auf eine datei im ordner oder in neben ordner zu ohne system()????

    std::ifstream ??????

    Nein, das geht nicht. Er hat ja kein Betriebssystem.

    mfg Martin



  • mcdgt schrieb:

    ok nächste frage wie greife ich per c++ auf eine datei im ordner oder in neben ordner zu ohne system()????

    Indem du das Dateisystem (z.B. NTFS) implementierst. Den eigentlichen rohen Festplattenzugriff bekommst du durchs BIOS oder durch (selbst programmierte) Treiber.



  • ipsec schrieb:

    mcdgt schrieb:

    ok nächste frage wie greife ich per c++ auf eine datei im ordner oder in neben ordner zu ohne system()????

    Indem du das Dateisystem (z.B. NTFS) implementierst. Den eigentlichen rohen Festplattenzugriff bekommst du durchs BIOS oder durch (selbst programmierte) Treiber.

    So weit ich weiß, sind doch übliche BIOSe in 16-Bit Code implementiert. Wenn er nur 'nen 32-Bit-Compiler hat, dann muß er sich auch die Treiber selber programmieren. Oder kann man aus 32-Bit-Code auch 'nen 16 Bit Bios aufrufen?

    mfg Martin



  • mcdgt schrieb:

    ok nächste frage wie greife ich per c++ auf eine datei im ordner oder in neben ordner zu ohne system()????

    In dem Du alles selbst implementierst!
    Der sinnvollste Weg wäre es zu Linux zu greifen, daß System direkt in die Console zu booten, so daß Dein Programm direkt gestartet wird. Als Beispiel können hier die ganzen Install CD/DVDs für Linux gelten, die nur die Konsole starten und kein GUI.

    Das Programm wird dann ganz normal mit C++ geschrieben, und als Ausgabe verwendet man dann ncurses. Alles wesentliche steht dann zur Verfügung und Du brauchst Dir keine Gedanken darüber zu machen, wie man eine Dateisystemtreiber selbst schreiben muß.



  • Man kann nicht "einfach so" ein Programm booten lassen. Dabei ist es vollkommen egal, in welcher Sprache es geschrieben wurde. Damit du ein Programm ausführen kannst, musst du dem PC vereinfach gesagt erst einmal in den Zustand bringen, dass er dazu überhaupt in der Lage ist. Wenn du das geschafft hast, stehst du vor dem nächsten Problem: Der Computer weiß nicht mehr, was ein Dateisystem, eine Datei, eine Internetverbindung, eine Festplatte oder eine EXE überhaupt ist.

    Das was dir also vorher das Betriebssystem abgenommen hat, musst du nun alles selber regeln. Letztendlich wird aus einem simplen Programm ein ganzes Betriebssystem. Und damit der Computer überhaupt erst weiß, was zu tun ist, musst der erste Teil dieses Betriebssystems zwangsläufig in Assembler geschrieben sein.

    Alles in allem erreichst du hier echt das unterste Level der Programmierung. Natürlich kann man sich einiges an Arbeit abnehmen lassen, indem man ein "Mini-Linux" benutzt... Aber auch hier ist der Aufwand das einzurichten noch immer gegeben. Insbesondere, wenn man keinerlei Wissen über die Hintergründe hat.

    Anscheinend hast du auch keine große Erfahrung im Programmieren, was dein Vorgehen noch schwieriger macht...

    Von den ganzen Kompatibilitätsproblemen, die es bei einem bootbaren Programm gibt, will ich mal gar nicht erst sprechen.

    Ich würde dir empfehlen etwas anderes zu machen. Bleib doch zunächst unter Windows. Programmier dort vor dich. Schau dir später SFML an und bastel ein kleines Spiel. Da hast du definitiv mehr von. Vorallem ein Erfolgserlebnis.


Anmelden zum Antworten