Zitat von
delphifan2004:
Wenn ich mir so die Quelltexte von 32 Bit Programmen angucke, sehe ich im Assemblerteil immer wieder Zuweisungen an al, ah, ax, bl, bh, bx, cl, ch, cx,
dl, dh, dx.
Das sind allesamt 16- oder 8-bittige Register.
Zitat von
delphifan2004:
Nun habe ich in Fachzeit- schriften gelesen, das 16 Bit Dos Programme auf 64 Bit Rechnern nicht mehr laufen.
Das hängt primär vom Betriebssystem ab und nicht von den Prozessoren. Bei IA64 weiß ich es nicht, AMDs x86-64 ist aber ein komplett x86-kompatibler Prozessorkern, somit im Realmode nur 16-bittig. Erst Das Betriebssystem sorgt dafür, daß er in den 64bit-Modus geschaltet wird, weswegen auch ein dafür entwickeltes Betriebssystem notwendig ist, um 64bit-Anwendungen auszuführen.
Zitat von
delphifan2004:
Weiterhin habe ich gelesen, das es nur noch eax,ebx,ecx,edx, die 32 Bit oder rax,rbx,rcx,rdx, die 64 Bit Register geben wird.
Kann ich nichts drüber sagen, ich weiß nicht inwiefern der 64bit-Modus der x86-64-Architektur den Zugriff auf Register einschränkt, kann mir aber nicht vorstellen, daß es eine architekturbedingte Beschränkung ist. Allerdings ist es eine andere Speicherverwaltung, und AFAIK lässt Windows es nicht zu, 32bit-Programme im 64bit-Modus zu verwenden. Stattdessen wird bei Windows (für 64bit) eine Emulationsschicht eingeführt, also ein Windows on Windows64 (WoW54), das sämtliche Aufrufe für 32bit implementiert.
Nico hat so ein Ding und wie ich den kenne hat er sicherlich schon mit rumgespielt, er kann sicherlich mehr darüber sagen, wie die Architektur (nicht das Betriebssystem) den Zugriff im 64bit-Modus beschränkt.