Hardwarenah, aber nicht hardwarenah, aber...

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Hardwarenah, aber nicht hardwarenah, aber...

Beitragvon Magellan » Freitag 22. Februar 2008, 23:19

Hallo Forum,

ich bin neu hier und mich führen ein paar Fragen hierher, die mich schon seit Längerem immer mal wieder umtreiben.

Ich bin studierter E-Techniker und kann "für den Hausgebrauch" C, C++, Java usw. programmieren, will sagen, die grundlegenden Konzepte dieser Hochsprachen sind mir bekannt. Auch habe ich mich mit Microcontrollern und deren Programmierung in Assembler beschäftigt.

Über die Architektur von PCs, insbesondere in Verbindung mit deren Betriebssystem, weiß ich allerdings nicht wirklich gut Bescheid. So habe ich einige Verständnisprobleme:

Zum Beispiel ist es ja unter beispielsweise Windows gar nicht so einfach möglich, direkt irgendwas an der Hardware zu machen, für mich lief es bisher immer darauf hinaus, das SDK eines Hardwareherstellers zu nutzen, um irgendwelche Peripherie steuern zu können. Dennoch kann man offensichtlich Assembler-Programme für Win32 schreiben. Hm, ich kann also doch direkt in den Registern der CPU herumspringen, wie ich grad lustig bin. Ich blick da nicht ganz durch, auf der einen Seite die totale Kontrolle durch Windows, auf der anderen Seite Assembler? Windows verwaltet irgendwie den Arbeitsspeicher, trotzdem kann ich den unter ASM direkt addressieren?

Dann schwirren mir da völlig ungeordnet Begriffe wie "Kernel-Mode" durchs Stammhirn? Ja wie?

Worum ich bitten möchte: Ich weiß, dass das alles sehr komplexe Zusammenhänge sind, aber irgendwann muss ich ja irgendwo anfangen. Könnt ihr mir Tips geben, was ich mir für Lektüre antun kann, um das Ganze besser zu verstehen?

Ich hab schon überlegt, ob evtl. ein Buch über den Linux-Kernel sinnvoll wäre, um zu blicken, was ein Betriebssystem zwischen Hardware und Software so alles anstellt. Oder Windows-API-Programmierung (Petzold?!) lernen? Oder Windows-Treiber-Programmierung?

Apropos Win32-API? Macht es noch Sinn, sich damit näher auseinanderzusetzen? Hat die Win32-API noch Zukunft, oder wird die von irgendwas .net-igem abgelöst?

Ich weiß, ganz schön viel für den Profi wahrscheinlich kopfschüttelnwertes Gelaber, aber vielleicht hilfts mir ja was...

Warum im Assembler-Forum? Nun, ich hoffe, dass sich hier der eine oder andere "Hardliner" rumtreibt, für den das hier gefragte Peanuts sind.

Danke für eure Hilfe und fürs Durchhalten bis hierher...

Viele Grüße,

Sebastian
Magellan
Newbie
 
Beiträge: 3
Registriert: Freitag 22. Februar 2008, 23:02

Re: Hardwarenah, aber nicht hardwarenah, aber...

Beitragvon crack » Montag 25. Februar 2008, 06:12

Magellan hat geschrieben:...

Über die Architektur von PCs, insbesondere in Verbindung mit deren Betriebssystem, weiß ich allerdings nicht wirklich gut Bescheid. So habe ich einige Verständnisprobleme:

Zum Beispiel ist es ja unter beispielsweise Windows gar nicht so einfach möglich, direkt irgendwas an der Hardware zu machen, für mich lief es bisher immer darauf hinaus, das SDK eines Hardwareherstellers zu nutzen, um irgendwelche Peripherie steuern zu können. Dennoch kann man offensichtlich Assembler-Programme für Win32 schreiben. Hm, ich kann also doch direkt in den Registern der CPU herumspringen, wie ich grad lustig bin. Ich blick da nicht ganz durch, auf der einen Seite die totale Kontrolle durch Windows, auf der anderen Seite Assembler? Windows verwaltet irgendwie den Arbeitsspeicher, trotzdem kann ich den unter ASM direkt addressieren?


Also die Addressierung des Speichers wird seit dem 80286 und Windows im Virtual Mode vorgenommen, den einzelnen Threads weist Windows den Speicher zu, die exakte Lage und die Zugriffsrechte wird durch die 'Privileg Levels' und die Page Descriptor Tables bestimmt, dieser Vorgang ist abstrakter als die unmittelbare Addressierung im 'Real Mode' unter DOS.
Die Zugriffsrechte auf die Ein- / und Ausgänge regeln die IO Privileg Levels IOPL diese werden durch entsaprechende Flags im Prozessorstatusword repräsentiert.
Allerdings sind gewisse direkte Hardware Zugriffe auch unter Windows möglich, wie beispielsweise das lesen oder schreiben der Festplatte mittels eigens für NTFS geschaffener INT32h Funktionen.

Magellan hat geschrieben:Dann schwirren mir da völlig ungeordnet Begriffe wie "Kernel-Mode" durchs Stammhirn? Ja wie?

Worum ich bitten möchte: Ich weiß, dass das alles sehr komplexe Zusammenhänge sind, aber irgendwann muss ich ja irgendwo anfangen. Könnt ihr mir Tips geben, was ich mir für Lektüre antun kann, um das Ganze besser zu verstehen?

Ich hab schon überlegt, ob evtl. ein Buch über den Linux-Kernel sinnvoll wäre, um zu blicken, was ein Betriebssystem zwischen Hardware und Software so alles anstellt. Oder Windows-API-Programmierung (Petzold?!) lernen? Oder Windows-Treiber-Programmierung?

Apropos Win32-API? Macht es noch Sinn, sich damit näher auseinanderzusetzen? Hat die Win32-API noch Zukunft, oder wird die von irgendwas .net-igem abgelöst?

Ich weiß, ganz schön viel für den Profi wahrscheinlich kopfschüttelnwertes Gelaber, aber vielleicht hilfts mir ja was...

Warum im Assembler-Forum? Nun, ich hoffe, dass sich hier der eine oder andere "Hardliner" rumtreibt, für den das hier gefragte Peanuts sind.

Danke für eure Hilfe und fürs Durchhalten bis hierher...

Viele Grüße,

Sebastian


Kernel-Mode bedeutet das ein Proframm die höchsten 'Privileg Levels' für Speicher- und Hardware Zugriff hat. Auch .net wird die WinAPI nicht ersetzen, und auch heute muss man für eine bessere Performance zu erzielen 'näher an die Hardware ranrücken' ...
Ich denke weiterführende Lektüre würde bei diesen Fragen sehr hilfreich sein...
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf


Zurück zu Assembler

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]

cron