AW: Windows 8 läuft auch auf ARM-Prozessoren
Wieviel wird denn heute schon noch in Assembler geschrieben
Alles, was du nur in Ring 0 machen kannst, ist bei keiner mir bekannten Programmiersprache oberhalb von Assembler enthalten. Du kannst mich gerne eines besseren belehren.
Hier mal eine kleine Auswahl:
- benutzen von Port -> die Grundlage eines jeden Hardwaretreibers
- in MSR und andere Spezialregister schreiben oder diese auslesen; wie beispielsweise IDTR für die Interrupt-Tabelle oder Register für den Wechsel von Ring 3 (Nutzermodus) zu Ring 0 (Kernelmodus) wie das SysEnter-Register
Auch andere Dinge sind meines Wissens nach nur mit Assembler möglich:
- Zustand von bestimmten Registern sichern -> für den Wechsel von Threads/Prozessen
- spezielle Instruktionen verwenden, z.B. von (I)SSE4, um eine Beschleunigung zu erreichen
Zugegeben, letzteres wird schon von manchen Compilern als Optimierung verwendet, aber der Mensch weiß doch manchmal immer noch am Besten, was er möchte. Außerdem kann so auch beides umgesetzt werden, einmal eine speziell an die Architektur angepasste schnelle Version und dann eine Version, die immer läuft. Beim Programmstart wird schnell getestet, ob das schnelle läuft und falls nicht, wird die alte Variante genommen. Mir ist bisher kein Compiler bekannt, der dies mit macht.
Die Beschleunigung, die durch Verwendung spezieller Befehle erreicht werden kann, ist nicht zu unterschätzen. Ich habe beispielsweise mal einen Teil von DES mit ISSE4 umgesetzt. Mein Assemblercode war kürzer als mein normaler C-Code. Zugleich hat die schnellste, andere Umsetzung, die ich gesehen habe, viermal mehr Zeit benötigt.
Es gibt also genug, was mit Assembler geschrieben ist und bei Betriebssystemen gibt es Dinge, die nicht anders umgesetzt werden können.
Auf der anderen Seite überrascht es vllt. viele, dass bei Windows schon seit vielen Jahren - auch schon vor der NT-Architektur - Mechanismen für andere Prozessorarchitekturen gibt. So hat das PE-Format, welches bei Windows z.B. bei EXE, DLL und SYS-Dateien verwendet wird, auch eine Angabe über die Architektur. Die Liste dabei ist relativ lang. Dazu gehören auch verschiedene ARM-Prozessoren, MIPS, ... . Microsoft hat die auch gepflegt. Das letzte Update gab es am 21.09.2010. Da wurde beispielsweise ARMv7 eingepflegt, was wohl die neuste ARM-Architektur ist - nicht zu verwechseln mit der Prozessorfamilie ARM7.
Auch gibt es verschiedene API-Funktionen, mit der beispielsweise die vorhandene Prozessor-Architektur ermittelt werden kann. In Visual Studio sind verschiedene Zielplattformen einstellbar, darunter MIPS und ARM.
Folglich ist es für viele Software-Entwickler einfach möglich, ihre Programme auch für die ARM-Architektur anzubieten. Nur wo Assembler genutzt wird, muss noch umprogrammiert werden. Dies wird Windows selber, verschiedene Treiber und einige beschleunigte Programme sein.