Autor Thema: Ins Video Memory schreiben  (Gelesen 7761 mal)

Alessandro

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« am: 10. December 2009, 20:11 »
Hallo Zusammen!

Erst einmal besten dank für das Tutorial und die vielen freundlichen und hilfreichen antworten in diesem Forum!

Ich gehöre auch zu den Neueinsteigern, und ich wüsste gerne, woher alle diese Standardfunktionen, die hier für ein Hello World benutzt werden, wissen das 0xb8000 im Memory auf der Grafikkarte und nicht im normalen Arbeitspeicher  liegt?

Besten Dank für eure erleuchtenden Antworten :-)

Viele Grüsse
Alessandro

Programm Noob

  • Gast
Gespeichert
« Antwort #1 am: 10. December 2009, 20:34 »
Soweit ich weiß durch die Adresse des Speichers, 0xb800, dadurch wird der Speicher, welcher für den Textmodus genutzt wird direkt angesprochen, über die Hardware
Ich hoffe ich habe mich verständlich ausgedrückt :-)

Programm Noob

Alessandro

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 10. December 2009, 21:13 »
Hallo!

Genau das war eigentlich meine Frage: Die Adresse 0xb8000 ist doch im Video Memory genau so Vorhanden wie im "normalen" Arbeitsspeicher, woher weiss meine Funktion oder alle die so herumschwirren, dass ich in den Videospeicher schreibe?

Oder verstehe ich komplett was falsch? :-)

Alessandro

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 10. December 2009, 21:33 »
Als IBM den Original IBM PC entworfen hat, haben sie den so verdrahtet, dass wenn die CPU auf die Adresse 0xb8000 (und einige folgende) zugreift, die Daten an die Grafikkarte geleitet werden. Deswegen ist an dieser Adresse der Video RAM.

Dein Programm/Funktion weiß nicht, dass da was besonders ist.

Du sagst dem Programm einfach es soll auf diese Adresse zugreifen. Du weißt, dass da der Videospeicher ist, weil das in den Tutorials steht.

Und der Autor des (ersten) Tutorials weiß das, weil er im Handbuch für den IBM PC gelesen hat. (Vielleicht nicht der Autor des Tutorials, das du gelesen hast, weil der von jemand anderem "sich inspirieren ließ". Vermutlich gibt es einen zyklischen Graphen, der beschreibt, wer von wem abgeschrieben hat, und irgendwo ist ein Knoten dem IBM Manual zugeordnet, und das hat nur eine handvoll ausgehender Kanten.)

Wir haben bei uns auch im Wiki auch ein Bild, dass die Speicherbereiche grob beschreibt: http://lowlevel.brainsware.org/wiki/index.php/Speicherbereiche
« Letzte Änderung: 10. December 2009, 21:36 von PorkChicken »
Dieser Text wird unter jedem Beitrag angezeigt.

Alessandro

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 10. December 2009, 21:38 »
Besten Dank für den Exkurs!

Wenn ich aber nun explizit 0xb8000 im Arbeitspeicher ansteuern möchte, ist dass nun gar nicht möglich (dann würde ich ja einfach adressierbaren Speicher verlieren)?

Nicht das ichs brauche, aber zum Verständnis..

Besten Dank!

PS gehe nach Lowlevel tutorial und bei "nicht-verstehen" klappere ich alles ab was google hergibt.. bin also im Protected Mode.
« Letzte Änderung: 10. December 2009, 21:47 von Alessandro »

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 10. December 2009, 21:46 »
Ja, der Speicherbereich ist futsch. Sind aber nur ein paar Kilobytes ;)

Wenn das komisch vorkommt, solltest du bedenken, dass die Original IBM PCs nur 512 KBytes RAM hatten. Das heißt der Adressbereich von 0x00000 bis 0x7ffff hat schon für den RAM gereicht.
Dieser Text wird unter jedem Beitrag angezeigt.

Alessandro

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 10. December 2009, 21:48 »
Genau "da" wundert es mich doch, wenn man schon so wenig Arbeitsspeicher hat, "verschenkt" man doch nur ungern noch.. :-)

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 10. December 2009, 22:00 »
Genau auf die Adressen achten ;)
Das wurd als sicher angenommen, weil das nen ganzes Stück außerhalb des verwendbaren/vorhandem war (0xb0000 > 0x7ffff) - da is nix mit verschenken.
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 10. December 2009, 22:07 »
PS gehe nach Lowlevel tutorial und bei "nicht-verstehen" klappere ich alles ab was google hergibt.. bin also im Protected Mode.
Wenn du die Tutorials aus dem Magazin abarbeitest, solltest du immer vor Augen haben, dass die Autoren teilweise auch nicht verstanden haben, was sie da schreiben. Die Artikel sind da vielleicht so geschrieben, dass alles leicht aussieht, aber so ganz richtig, und schlau sind die Artikel da nicht immer. Am besten mehrere Quellen bemühen. ;) Google ist da immer ein guter Anfang.
Dieser Text wird unter jedem Beitrag angezeigt.

Programm Noob

  • Gast
Gespeichert
« Antwort #9 am: 10. December 2009, 22:29 »
Ich meinte das auch so, das an der adresse 0xb800 der video speicher für die textconsole liegt, und ew an der stelle keinen Arbeitsspeicher gibt.

Programm Noob

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 10. December 2009, 22:44 »
Ich meinte das auch so, das an der adresse 0xb800 der video speicher für die textconsole liegt, und ew an der stelle keinen Arbeitsspeicher gibt.
Wobei man, um korrekt zu sein, auf die Anzahl der Nullen achten muss. Insbesondere dem Computer muss man sagen, ob Segment 0xb800 oder Adresse 0xb8000 gemeint ist. Sonst funktionierts einfach nicht.
Dieser Text wird unter jedem Beitrag angezeigt.

Programm Noob

  • Gast
Gespeichert
« Antwort #11 am: 10. December 2009, 23:46 »
oh da hab ich qohl eine null zu wenig eingetippt. Is am Handy auch schwerer. :-D

Programm Noob

Alessandro

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 11. December 2009, 00:12 »
PS gehe nach Lowlevel tutorial und bei "nicht-verstehen" klappere ich alles ab was google hergibt.. bin also im Protected Mode.
Wenn du die Tutorials aus dem Magazin abarbeitest, solltest du immer vor Augen haben, dass die Autoren teilweise auch nicht verstanden haben, was sie da schreiben. Die Artikel sind da vielleicht so geschrieben, dass alles leicht aussieht, aber so ganz richtig, und schlau sind die Artikel da nicht immer. Am besten mehrere Quellen bemühen. ;) Google ist da immer ein guter Anfang.

Genau damit hatte ich zu beginn am meisten Mühe bekundet, bis ich nur mal zufälligerweise (hier im Forum) gelesen habe das GDT Segmentierung nicht mehr state of the Art ist, habe ich schon ca. 10 tutorials abgeklappert und mich intensiv damit beschäftigt :-) ...

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 11. December 2009, 08:38 »
PS gehe nach Lowlevel tutorial und bei "nicht-verstehen" klappere ich alles ab was google hergibt.. bin also im Protected Mode.
Wenn du die Tutorials aus dem Magazin abarbeitest, solltest du immer vor Augen haben, dass die Autoren teilweise auch nicht verstanden haben, was sie da schreiben.
Ich hoffe, dass wenn jemand von "dem" Tutorial redet, mittlerweile nicht mehr das Magazin, sonden OS-Dev für Einsteiger gemeint ist. Und ich hoffe weiter, dass der Autor dieser Reihe halbwegs verstanden hat, worum es geht. ;)
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« Antwort #14 am: 11. December 2009, 09:35 »
Soweit ich weiß, wird der Video-Speicher eigentlich nur im Arbeitsspeicher gespiegelt, dass findet man übrigens auch auch im Bios. Bei älteren PC's (glaub ich) steht im Bios noch sowas wie Shadow xyz... Und genau die Option ist dafür da. Wenn sie nicht aktiviert ist , wird das Video-Memory eig auch nicht im Arbeitsspeicher gespiegelt, aber eigentlich ist sie immer Standardmäßig an. Genauso kann das Bios auch speicher von erweiterungskarten im Speicher spiegeln, z.B. an 0xC000 usw.

(Alle Angaben ohne Gewähr ^^)
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

 

Einloggen