Hardwarenahes Programmieren



  • Leider nicht mehr erhältlich, aber ein Buch, das so Hardwarenah ist, wie man es nur will: Link
    Nicht mehr aktuell, geht aber auf jedes erdenkliche Detail einer Grafikkarte ein, greift per Assembly auf den VRam zu und schreibt mit solchen Funktionen programme, die Schattierte Würfel und Fraktale darstellen.
    Was leider eben nicht mehr möglich ist, ist Assembly und Interrupts für hardwarenahe Programmierung zu benutzen (in Win).

    Edit: Mag sein, das du es irgendwo anders noch findest oder erhalten kannst, evtl ebay.



  • Also das mit der Grafikkarte war nur ein Beispiel, bin für alle Hardwaretipps dankbar. Hab eure Links mal durchgechecked, hat ganz gute Inofs. Aber wo finde ich dann zb. eine Tabelle, welche mir all die Portadressen eines PC's liefert???

    Mit Asssembler hab ich auch schon mal einwenig herumgespielt, aber wenn ich keine Portadressen und dergleichen habe, komme ich auch damit nicht weiter.



  • Was stellst du dir eigentlich genau vor? Welche Hardware willst du ansprechen? Das ist keine generelle Sache!

    http://www.c-plusplus.net/forum/viewtopic.php?t=39771

    da findest du auch Erklärungen zur Ansteuerungen unterschiedlicher Hardware.



  • Kurze zwischenfrage: Habe ich es richtig verstanden, dass man assembler-code mehr oder weniger direkt in c++ einbinden kann?



  • @ness
    ja kann man. Ist aber Compiler abhängig und hatten wir sicher schon mehrfach



  • Welche Hardware will ich denn ansprechen?

    --> Ich frage mich viel mehr, welche Hardware kann ich denn überhaupt über welchen Port ansprechen? Interrupt's, welche ich in ASM verwenden kann, funktionieren im inline Assembler nicht (oder doch??)

    --> Wie kann ich zb. das CD-Rom öffnen?
    --> Kann ich eine Tastatureingabe direkt abfragen (ohne cin>>....)
    --> Wo / Wie habe ich Zugriff auf die Interrupt Tabelle, kann ich eigene Programmieren?
    --> Ist es möglich, die Power LED des PC's zum blinken zu bewegen? (Wie zb. im Stand By Modus)

    --> Grundsätzlich interessiert mich alles was mit "Low-Level Programmierung" zu tun hat, wie die bereits guten Links zur Grafikkarte von 'SeppSchrot'



  • Chefmech schrieb:

    Welche Hardware will ich denn ansprechen?

    --> Ich frage mich viel mehr, welche Hardware kann ich denn überhaupt über welchen Port ansprechen? Interrupt's, welche ich in ASM verwenden kann, funktionieren im inline Assembler nicht (oder doch??)

    Ähem, du willst den ganzen Kram doch nicht etwa mit dem MSVC machen oder so? Dann lass dir gesagt sein, dass du Hardwareprogrammierung in dem Sinne, wie sie hier gerade diskutiert wird, unter Windows vergessen kannst. Interrupts, Port-Zugriffe etc. gehen natürlich auch im Inline-Assembler, theoretisch. Allerdings sind das privilegierte Befehle, die normale Anwendungsprogramme nicht ausführen dürfen. Nur der Betriebssystemkern (inklusive Gerätetreiber) darf das. Du hast also zwei Möglichkeiten: Entweder du wickelst deine Sachen über die vorgesehenen Treiber ab (CD-Rom öffnen dürfte sowas sein), oder du schreibst selbst einen Treiber.



  • Hi

    du solltest dir vileicht auch mal etwas gedanken über die Prozessorgeschichte des 80x86 machen früher gabs den schönen realmode und unser liebes dos.
    ich bin user ich darf das.

    und Heute Protected Mode, Virtueller Speicher, und multiuser, mutiprocessing betribsisteme ala Winows und linux, die einem dauernd auf die finger klopfen weil man nicht root/administrator ist

    wenn du wirklich hardware nah programmiern willst, setz dir ein dos System auf. Da darst du auf allen ports und speicher adresse zugreife die du findest, natürlich in eigener verantwortung. Das schlimmste was passieren kann, ist :

    der Monitor anfängt an zu pfeifen
    die der Rechenr Hängt
    HALT in debuger angesprungen,
    key bord interrupt in die Wüste geschickt,
    Dos code im speicher überschrieben,
    ....

    aber wozu gibts den reset knopf, keine 10s spähter und dos ist da wo wir es verlassen haben.

    gruss Termite



  • Man kann sich auch den CMOS-Ram zerschießen 😉



  • Hi

    und auf welchem system konnte man löcher in disketten brennen? war das auf dem c64? aber apropo c64 das war doch auch der rechner wo man den prozessor durch irgendwelche endlosschleifen ins jenseitz befördern konnte, oder?

    gruss Termite


Anmelden zum Antworten