Autor Thema: Io Stream  (Gelesen 5693 mal)

DaniilKharlamov

  • Beiträge: 22
    • Profil anzeigen
Gespeichert
« am: 05. May 2004, 14:40 »
Hola,
ich wollte gerne fragen: Kann man in C den iostream.h benutzen? Man kann doch problemlos text ausgeben? Was ist aber mit input? Ich habe mal gehört, dass man dafür noch ein Tastaturtreber haben muss... stimmt das? Wie bastele ich mir den Zusammen?
Daniel
Meine lieblingsbilder:
[1] http://www.lifeisajoke.com/Osama/look_in_your_mirror_osama.jpg

[2]http://www.lifeisajoke.com/Osama/osamas_airforce.jpg

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #1 am: 05. May 2004, 15:48 »
Also die C/C++ Bibliotheken, wie iostream.h greifen fast alle auf das Betriebssystem zurück. Darum darfst du die in deinem eigenen OS solange nicht verwenden, bis du kompatible Funktionen integriert hast.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 05. May 2004, 16:20 »
Chris hat recht, du kannst bei deinem eigenen keine Bibliotheksfunktionen verwenden da sie an das Betriebssystem gebunden sind. Und zum Input:
Das du einen Tastaturtreiber brauchst ich vollkommen richtig und funktionieren sollte der so:
Jedesmal wenn du eine Taste drückst wird der HardwareIRQ 1 ausgelöst, der ist mit einem bestimmten Interrupt verbunden. In diesem Interrupt müsstest du den tastaturscancode aus dem Keyboardport 60h lesen und in einen Ascii code umwandeln. Diesen Ascii sollte man dann in einem Puffer speichern. Dann muss man dem Keyboard noch sagen dass man den Scancode erhalten hat, damit der nächste gesendet werden kann, und dem HardwareIRQ controller ebenfalls melden das wir mit dem Interrupt fertig sind, sonst können keine weiteren ausgelöst werden.
Wenn wir das dann im Puffer haben brauchen wir nur noch eine Funktion die den Puffer ausliest und meinetwegen in einer Variable zwischenspeichert oder auf den Bildschirm bringt. Meine Funktion speicherts in ner Variable vom char typ(deswegen heisst mein prototyp auch char getchar(); :p Das kann man dann nutzen um Strings einzulesen die das als Array speichern
Soweit das Grundprinzip
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #3 am: 05. May 2004, 16:35 »
wollt mal meinen RMode Tastatur-Treiber hier vorstellen sagt mir ma eure Meinung dazu ich mach nämlich noch nich solange Assembler.

Der Treiber an sich hat noch nen paar kleine Bugs die aber scheinbar nich so gravierend sind.

Ich würd das ganze ma unter Bochs testen

http://mitglied.lycos.de/lobmann/KeyboardTestKernel0.1.asm
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

kleiner

  • Beiträge: 131
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 05. May 2004, 17:40 »
Wichtig ist auch noch, dass <iostream>, Du musst bei den neueren gcc's immer <iostream> und nicht <iostream.h> nehmen, weil das der Standard so fordert, C++ ist und die darin enthaltenen globale Objekte, wie cin, cout, cerr und clog, eben erst initialisiert werden müssen.
Aber weil es Teil der StdLibC++ ist, musst Du es eh erstmal selbst auf Deinem System implementieren, auch wenn Du viel davon sicher aus der Linux-StdLibC++-Implementation nutzen kannst.

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #5 am: 05. May 2004, 20:10 »
Mit C++ wirst du, wenn es dem ISO Standard entspricht, wahrscheinlich mit den Pointern ein paar Probleme haben. Was z.B. der GCC vor kurzem noch klaglos angenommen hat gibt jetzt einen Fehler. Ich würde dir Sowiso zu C raten, C++ ist nicht mehr Lowlevel genug ;)

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #6 am: 05. May 2004, 20:44 »
C++ ist genauso LowLevel wie C auch.

Lediglich gibt es hier ein paar zusätze von denen die Objektorientierung das meiste ausmacht.
Und ob du nun ein Objekt definierst, oder Funktionen mit der passenden Datenstruktur kommt aufs selbe raus.
----------------------
Redakteur bei LowLevel

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #7 am: 05. May 2004, 21:08 »
Also ich finde das mit den Streams ist nicht wirklich so Lowlevel, aber darüber kann man ja auch geteilter Meinung sein...

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #8 am: 05. May 2004, 21:15 »
Die Streams müssen ja auch erstmal realisiert werden. Und da setzt auch LowLevel an.

Du darfst C++ nicht gleich als ganzes sehen wie du es von einem bestehendem OS gewohnt bist.

Es gehört schon ein bisschen was dazu, C++ erstmal soweit startreif zu bekommen, das man alle Funktionen nutzen kann. (Siehe dazu mein C++ Tut).
----------------------
Redakteur bei LowLevel

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #9 am: 05. May 2004, 21:19 »
Genau das meine ich, wenn man das ganze C++ haben möchte, muss man viel zu viel (für mich) machen.
[Aber ich möchte mich ja nicht mit dir streiten, sonst sind hinterher noch alle meine Posts weg ;) ]

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #10 am: 05. May 2004, 21:57 »
löl

Ich lösche ja nicht wahrlos Posts. Aber die waren einfach etwas zu provozierend. Und ich wollte nur Ärger vermeiden.


Ich persöhnlich würde den Aufwand auch nicht gerne machen.
Somal man zumindest schonmal Klassen (Siehe Tut) benutzen kann, bin ich soweit schon recht zufrieden.

Den Rest benutze ich auch beim normalen Programmieren so gut wie nie.
----------------------
Redakteur bei LowLevel

kleiner

  • Beiträge: 131
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 05. May 2004, 23:33 »
Ich wollte nur anmerken, was man dafür zusätzlich alles braucht.
Ich denke mal, dass es gar nicht dumm ist, die unterste Schicht in C zu schreiben. Alles was darauf aufbaut kann dann auch ruhig in C++ geschehen, aber für den Anfang ist C meiner Meinung nach die bessere Wahl.

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 12. June 2004, 23:58 »
auf www.invalidsoftware.net findet man nicht nur die neue Seite des "Writing a kernel in C++"-Tutorials sondern wenn man sich registriert hat auch ein gutes Beispiel eines C++-Kernels (im Forum gibt es einen Download-Thread).

 

Einloggen