Ergebnis 1 bis 5 von 5

Thema: Bibliotheken

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Users Awaiting Email Confirmation

    Bibliotheken

    Hallo, ich wollte mal fragen wie man auf die Werte wie Beispielsweise die Uhrzeit zugreift, aber ohne eine Datei dafür einbindet(in C++ ctime), also a= Datum.
    Ich frage dies jedoch nicht aus einem konkretem Problem, sondern weil ich gern wüsste wie so eine Bibliothek funktioniert und ich sowas wie cout gerne selber machen würde als es in einer Datei definiert zu haben (ja, ich weiß das es wenig Sinn macht weil ich die Bibliotheken immer brauchen werde, weil sie mir arbeit abnehmen, aber ich möchte ja nur wissen wie ich sie selbst schreiben könnte ).
    Mfg Tridestaros

  2. #2
    Naja Bibliotheken enthalten entweder Assembler, C-Code selbst oder eben Aufrufe anderer Bibliotheken. Um zu verstehen wie sowas abläuft müsstest du eben wissen wie ein Betriebssystem funktioniert. Es gibt sogenannte Interrupts ("Unterbrechungen") - zum einen softwareseitig und hardwareseitig. Zum Beispiel wenn du auf dein Tastatur drückst wird eine bestimmte BS-Funktion aufgerufen und zwar die die im IDT steht (Eine Art Tabelle für den PC mit Adressen von Sprungpunkten bei bestimmten Interrupts). Allerdings müssen sie nicht Hardwareseitig aufgerufen werden. Man kann sie auch per Software aufrufen (In Assembler "int"). Nun definiert das BS massig solcher Interrupts -255 max allerdings - lässt sich allerdings erweitern durch Register. Z.B. Wenn Register ah auf 0x01 steht und Int 21 aufgerufen wird kommt das und wenn er 0x02 ist was anderes. Nun müsstest du den korrekten Interrupt für die Uhrzeit haben in Windows und dann die Rückgabewerte des Interrupts ansehen. Wenn du wirklich interessiert bist und evt. noch ein Diskettenlaufwerk (oder eine Festplatte mit GRUB hast) kannst du auch mal versuchen eine Betriebssystem zu programmieren. Simpler Protected Mode mit Displaytreiber und IDT aufsetzen sollte in ein bis zwei Wochen erlernbar sein.

  3. #3

    Users Awaiting Email Confirmation

    ok, also wenn ich das richtig verstanden habe kann ich das mit c++ also nicht selber machen, weil ich die Adresse des Wertes Zeit z.B nicht kenne.
    Na ja ich glaube mir ein eigenes Betriebssystem zu bauen ist mir noch etwas zu hoch .

  4. #4
    Zitat Zitat von Tridestaros Beitrag anzeigen
    ok, also wenn ich das richtig verstanden habe kann ich das mit c++ also nicht selber machen, weil ich die Adresse des Wertes Zeit z.B nicht kenne.
    Mit Google und co. findet man sachen schnell.

    Sagen wir wir wollen das Jahr wissen...
    Code:
    MOV AH,04h
    INT 1Ah
    Nun ist es in CX gespeichert. Per Inline-Asm kannst du es dann auf eine C-Variable übertragen. Leider kann ich dir nicht sagen wie genau das bei C geht, da habe ich wenig Erfahrung.

  5. #5
    Ich verstehe die Frage eigentlich nicht genau ...

    Das was du ueber die Header einbindest, sind ja gerade die Interfaces zu den Bibliotheken. Du willst also gerade KEINE Bibliotheken verwenden, wenn ich das richtig verstehe Oo

    Na ja .. wie auch immer ... fuer Inlineassembler gibt es in C/C++ das schluesselwort asm. Assemblercode bindest du ueber _asm{..} oder __asm{..} oder asm{..} ein. Welches du nehmen must, ist compilerabhaengig und steht in dessen dokumentation. In den Block mit geschweiften klammern kommt dann einfach der assemblercode. Das schoene ist, man kann in ihm ganz normal Variablen benutzen

    [code]
    unsigned char jahrhundert, jahr, monat, tag;
    _asm {
    MOV AH,04h
    INT 1Ah
    MOV jahrhundert, CH
    MOV jahr, CL
    MOV monat, DH
    MOV tag, DL
    }

    Damit legst du dich aber auf EINE Rechchnerarchitektur, in diesem fall x86 fest und wirst auch noch betriebssystemabhaengig (in diesem Falle nur BIOS-Abhaengig) .... gaaanz schlecht. Auf einer Sunsparc mit Risc Prozessor siehst du mit sowas z.B. alt aus.

    Ach ja ... falls dich die Interrupts genauer interessieren ... das scheint nett zu sein -> http://de.wikibooks.org/wiki/Interrupts_80x86

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •