Funktionen selber schreiben



  • Hi,

    ich und ein paar kumpels wollen ein primitives OS coden (nix großartiges), und wollen auch auf C++ nicht verzichten 😉 Doch da wir ja nicht die Standardlib benutzen können (war ja klar) müssen wir halt ein paar funktionen "nach"-coden.
    z.B. wie: sleep(); printf(); sprintf(); cout; usw...

    naja wir haben uns aufgeteilt, ich muss halt die funktion sleep(); coden, aber bei der Suche hab ich nix über Timing gefunden 😞

    Könnt ihr mir da weiterhelfen?

    Gruß,
    Ikari



  • sleep: Der Prozess geht in den Zustand nicht-lauffähig/blockiert, gleichzeitig wird ein Timer gestartet, der beim Ablauf das Ereignis "Wecke meinen Prozess auf" auslöst. Eigentlich die einfachste der genannten Funktionen.

    printf nachzubauen wird *wesentlich* heftiger.



  • das mit printf stimmt! Die funktion hab ich als erstes versucht nachzucoden! Ich sag nur noch "aua"...

    Naja ich hab hier im Forum, aber nichts gefunden das mir mit meinem Problem bei sleep weiterhelfen könnte! Hab erst vor 3-4 Wochen mit kleinen ASM programmen angefangen, daher kenn ich die sprache noch net soooo gut 🙂

    Kannste mir denn ein paar Infos dazu geben, wenn du welche hast/kennst?



  • Assembler lernen ist kein Akt, es gibt tonnenweise Tutorials, guck mal hier in der FAQ oder bei Google.

    Ein OS schreiben kannst du dann allerdings noch lange nicht.



  • Achja noch was: Man kann ja nicht die stdio.lib benutzen, wie ist das mit STL? Kann man das auch nicht benutzen?



  • nee alleine schreibe ICH ja nichts 🙂 Wir sind zu fünft und 2 davon proggen schon seit 5-6 Jahren in ASM und wir 3 anderen fangen grade erst an, da wir aber nicht alles auf die Beiden hauen wollen, wollen wir mithelfen 🙂

    In der FAQ fand ich leider nichts zum Thema Timing 😞



  • Die STL kannst du nicht benutzen, ausser du portierst die libstdc++ auf dein OS.

    Geheimer Timing Tipp für Intel CPUs



  • boah kewl!

    aber wie portiere ich die libstdc++ auf mein OS?



  • Ich würde dir raten, das mit der internen Uhr zu machen. Du musst ja sowieso nen Handler für den Timerinterupt implementieren, und den lässt du dann immer einen Zeitwert inkrementieren, und eine Liste scannen, mit Events (könnten z.B. Zeiger auf die aufzurufende Funktion sein) die zu dem noch einen Zeitwert haben wann sie ausgelöst werden.
    Und deine sleep Funktion würde dann einfach einen neuen Eintrag in der Liste erstellen.

    Im RM könnte mensch das auch mit ner schleife machen, und der TimerInt. inkrementiert immer nur einen Wert.

    mfg
    -bg-


Anmelden zum Antworten