![]() |
32 Bit Programme auf 64 Bit Rechnern
Hallo!
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. Nun habe ich in Fachzeit- schriften gelesen, das 16 Bit Dos Programme auf 64 Bit Rechnern nicht mehr laufen. 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. Wenn es sich um ein 32 Bit Programm handelt, müssen doch deshalb dennoch alle Zuweisungen an die kurzen Register al,ah,ax,bl,bh,bx,cl,ch,cx,dl,dh,dx geändert, das heißt in eax,ebx,ecx,edx geändert werden. Sonst läuft doch ein 32 Bit programm auf dem 64 Bit Rechner auch nicht, auch wenn es sonst 32 Bittig ist? Oder sehe ich da was falsch? Würde mich über ne kompetente Antwort freuen Delphifan20 |
Re: 32 Bit Programme auf 64 Bit Rechnern
Also ich hab einen 64-Bit Rechner und bei mir läuft alles noch genaus wie vorher, allerdings hab ich derzeit auch noch ein 32-Bit-Windows drauf ^^
Ich vermute aer mal, der in den 64-Bit für die 64-Bit-Register andere Codes verwendet werden, denn sonst könnte und wird es ja Probleme mit den "alten" 8, 16 und 32-Bit Registern kommen. |
Re: 32 Bit Programme auf 64 Bit Rechnern
@delphifan
das kommt auf deine cpu an. also auf einen itanium laufen alle 32 bit programme aber arsch langsam. weil die cpu den 32 bit zugriff emuliert. 16 bit läuft da gar nicht mehr drauf. anders beim althon64 er ist ein 32 bit cpu mit 64 bit erweiterung. dort laufen die 32 bit programme und die 64 bit progs beide ohne probleme und auch dos hab ich drauf laufen fuer meine notfallkonsole. Gruß richard |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
Zitat:
Zitat:
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. |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
Na Dann warten wir mal auf Nico ^^ |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
|
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
![]() ![]() Daniel |
Re: 32 Bit Programme auf 64 Bit Rechnern
Hallo!
Ich guck grad, was hier so heute für Themen sind, wobei ich auch das hier entdeckt habe. Zitat:
Zitat:
Schönen Tag noch von Traudix |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
1) Schwierig wird es zum Beispiel dadurch, dass 32-Bit-Module nicht in 64-Bit-Prozesse geladen werden können (und vis versa). Das heißt, dass man für Shellerweiterungen eine 64-Bit-DLL schreiben muss um in den 64-Bit Explorer zu kommen. Wenn man Strukturen aus anderen Prozessen liest (so wie ![]() 2) Die Registrierung für 32-Bit-Anwendungen ist in die 64-Bit-Registrierung eingehängt. Um aus WoW64 Zugriff auf die 64-Bit-Registrierung zu erhalten muss der API spezielle Flags übergeben. 3) Einige Systemverzeichnisse werden innerhalb von WoW64 automatisch umgeleitet. Ein 32-Bit-Programm sieht zum Beispiel C:\WINDOWS\SysWOW64 als "C:\WINDOWS\system32" (unter C:\WINDOWS\SysWOW64 liegen die DLLs der Win32-API unter C:\WINDOWS\system32 die DLLs der Win64-API). Das gleiche gilt auch für das %ProgramFiles%-Verzeichnis und andere. Um die 'Umleitung' zu umgehen muss man diese mit einer neuen API deaktivieren. Es können also nur 32-Bit-Programme auf C:\WINDOWS\system32 zugreifen wenn sie die neuen APIs kennen... Zitat:
Das ist mir bei ![]() Kurz: Es geht nicht ohne Tests auf einem echten Win64-System (sollte man seine Software nicht ohnehin auf den Zielplattformen testen ;)) |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
|
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
Da es Aufgabe des Betriebssystems ist, im 64-Bit-Modus so zu tun als ob ein 32-Bit-Kernel vorhanden ist, habe ich mich nicht um die Details gekümmert. Durch den Prozessor ist es nur dadurch limiert, dass im 64-Bit-Modus kein vm86-Modus zur Verfügung steht. Der Prozessor-Support für die Vitualisierung ist erst in den neuesten AMD64 vorhanden (aber das dürfte nur VMware interessieren). |
Re: 32 Bit Programme auf 64 Bit Rechnern
Hallo!
Zitat:
Die Dll könnte auch unter Borland Pascal so geschrieben werden, das beispielsweise Assemblerfunktionen aufgerufen werden, die mit den 32 Bit Registern arbeiten: asm db 66h mov ax,bx, wobei durch das Byte 66h, wenn das der richtige OpCode dafür ist, dafür sorgt, das die 32 Bit, Äquivalente verwendet werden, falls der integrierte Assembler verwendet wird. Außerdem enthält Borland Pascal den Turbo-Assembler, der die Direktive .386 beherrscht, womit dann aus dem Code ein 32 Bit Programm entstht. Dann in der Dll Funktionen definieren, die in Turbo-Assembler geschrieben sind. (In der Dll Objektdatei dazulinken...). Die Dll könnte außerdem 32Bit-Funktionen des Windows API aufrufen. Die Dll ist doch aber dann immer noch 16 Bittig, zumindest das Ladeformat? Die Verwendung solch einer Dll wird doch sicher dann problematisch? In ihr werden zwar dann 32 Bit Funktionen aufgerufen, es gibt inzwischen auch eine 32 Bit Version des DOS Extenders von Borland Pascal, aber der BPascal Compiler erzeugt doch trotzdemnoch 16 Bit Code (16 Bit Aufrufadressen auch in Dll)? Da liege ich doch sicher richtig in der Annahme, das Borland Pascal DLLs, auch wenn sie nur 32 Bit-Funktionen aufrufen und den 32 Bittigen DOS-Extender voraussetzen, wie dann auch das übrige Programm, das die Dll verwendet, auf keinen Fall auf 64 Bit Rechnern im 32 Bit Modus laufen. Und wenn ich diese Borland Pascal Dll zusammen mit Delphi verwenden wollte, steht das Problem 16 Bittiger Aufrufadressen im Raum und außerdem die fehlenden Ladefunktionen für die 16 Bittige Dll. (LoadLibrary16,GetProcedureAddress16,... Nun denn, ein schönes WE wünscht Delphifan2004 |
Re: 32 Bit Programme auf 64 Bit Rechnern
Hallo!
Zitat:
Zitat:
Wenn Du den Quelltext von so einer Dll hast, schreib ihn Dir so um, das Du ihn mit einem 32 Bittigen Delphi übersetzen kannst. Wenn Du den Quelltext der Dll nicht hast, Pech gehabt! Andere Frage, Wozu soll das gut sein, 16 Bittige 32 Bit Dlls zu verwenden? Der theoretische Teil dieser Fragestellung düfte ja mit all diesen Antworten abgehandelt sein, aber ich sehe keinen praktischen Nutzen, 16 Bittige Dlls in einem 32 Bittigen Betriebssystem verwenden zu wollen. DelphiSourcer |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
...:cat:... |
Re: 32 Bit Programme auf 64 Bit Rechnern
Hallo,
Zitat:
Aber mal zur Ursprungsfrage: Nur weil in einem Programm die 8- oder 16-Bit-Register verwendet werden ist das Programm noch lange kein 16-Bit-Programm. Der Unterschied liegt primär in der Speicheradressierung und darin, dass Windows in der 64-Bit-Ausführung keine 16-Bit-Api mehr unterstützt. Der Prozessor kann die Programme selbstverständlich ausführen (es sind ja gültige Opcodes), aber die Api-Aufrufe laufen ins Leere. Unter Win9x liefen auch alle 16-Bit-Programme in einem gemeinsamen Adressraum, ich weiss aber nicht, ob das unter WinXP auch so ist. Gruß xaromz |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
In deinem, delphifan2004, Post habe ich irgendwie keinen Widerspruch und keine Anmerkung zu Nicos Aussage gefunden, daß die ntvdm nicht mehr existiert. Oder wolltest du nur bestätigt wissen, daß eine alte 16bit-DLL, die einem Win3.x-Linker entsprungen ist, nicht mehr von einem 32bit-Programm unter WoW64 geladen werden kann? Falls ja: Nein, kann sie nicht mehr. |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
64-Bit DLLs im system32-Verzeichnis. Das passt doch nicht. :roll: |
Re: 32 Bit Programme auf 64 Bit Rechnern
Hallo!
Zitat:
Schönes Wochenende wünscht Euch allen Delphifan2004 |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
Zitat:
![]() |
Re: 32 Bit Programme auf 64 Bit Rechnern
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz