AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein 32 Bit Programme auf 64 Bit Rechnern
Thema durchsuchen
Ansicht
Themen-Optionen

32 Bit Programme auf 64 Bit Rechnern

Ein Thema von delphifan2004 · begonnen am 17. Nov 2005 · letzter Beitrag vom 21. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
274 Beiträge
 
Delphi 10.3 Rio
 
#1

32 Bit Programme auf 64 Bit Rechnern

  Alt 17. Nov 2005, 18:54
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#2

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 17. Nov 2005, 18:57
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#3

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 17. Nov 2005, 19:04
@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
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#4

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 17. Nov 2005, 19:21
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#5

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 17. Nov 2005, 21:33
Zitat von richard_boderich:
das kommt auf deine cpu an. also auf einen itanium laufen alle 32 bit programme aber arsch langsam.
...

anders beim althon64
...
Dann hab ich wohl mit meinen Athlon64 Glück, das ich mehr aus AMD's stehe

Na Dann warten wir mal auf Nico ^^
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#6

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 17. Nov 2005, 21:48
Zitat von himitsu:
Dann hab ich wohl mit meinen Athlon64 Glück, das ich mehr aus AMD's stehe
Hättest ja auch ein 64bit-Betriebssystem (und dazu passende Software) nehmen können, die gibt's ja auch schon seit Jahrzehnten wie Sand am Meer.
  Mit Zitat antworten Zitat
Benutzerbild von Daniel Schuhmann
Daniel Schuhmann

Registriert seit: 16. Jul 2005
Ort: München
391 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 17. Nov 2005, 21:57
Zitat von himitsu:
Zitat von richard_boderich:
[...]also auf einen itanium laufen alle 32 bit programme aber arsch langsam.[...]anders beim althon64.
Dann hab ich wohl mit meinen Athlon64 Glück, das ich mehr aus AMD's stehe [...]
Du solltest dabei bedenken, daß der Itanium eine komplett andere Architektur ist. Die CPU ist ein reiner Server-Prozessor. Cachegrößen (L3) bis zu 9 MB machen deutlich, daß diese CPU nichts auf dem Desktop verloren hat. Auch preislich kommen da mal eben $5800 zusammen, nur für die CPU, versteht sich. Wenn, dann mußt Du das mit den Desktop-CPUs von Intel vergleichen (neuere 500-Serie, 600-Serie, 800-Serie), die haben 64 Bit genauso implementiert wie AMD und liegen da Geschwindigkeitsmäßig bei 32 und 64 Bit ähnlich.

Daniel
Daniel Schuhmann
  Mit Zitat antworten Zitat
Traudix

Registriert seit: 6. Mär 2005
Ort: Hannover
16 Beiträge
 
#8

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 18. Nov 2005, 11:35
Hallo!

Ich guck grad, was hier so heute für Themen sind, wobei ich auch das hier entdeckt habe.

Zitat:
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:
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.
Aus diesen Ausführungen entnehme ich, das ich 32 Bit Programme nicht ändern muß, wenn sie auf einer 64 Bit CPU laufen sollen. Denn, wenn der Prozessorkern auch beim 64 Bitter X86-kompatibel ist und im RealMode nur 16 Bittig, kennt er ja auch die 8- und 16-bittigen Register. Da fällt mir ein Stein vom Herzen. Hab schon befürchtet, nun überall auf die 32Bit-Äquivalente umstellen zu müssen. Hab nämlich momentan noch einen 32 Bit Rechner und für den 32-Bittige Assembler-Programme, bei denen zwar in .asm-Dateiein die Direktive .386 gesetzt ist, aber trotzdem an vielen Stellen die 8- oder 16-bittige Version der Register verwendet wird (Bios-Interrupts, Farbpaletten-Einstellungen, Maussteuerung...) Hab auch paar Delphi Programme mit Assemblerteilen, wo sinngemäß das gleiche Problem vorliegt. Nun, wenn das später auf dem 64 Bitter kein Problem ist, brauche ich da nix zu ändern.

Schönen Tag noch von

Traudix
Suche die Herausforderung!
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#9

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 18. Nov 2005, 12:43
Zitat von Traudix:
Aus diesen Ausführungen entnehme ich, das ich 32 Bit Programme nicht ändern muß, wenn sie auf einer 64 Bit CPU laufen sollen. Denn, wenn der Prozessorkern auch beim 64 Bitter X86-kompatibel ist und im RealMode nur 16 Bittig, kennt er ja auch die 8- und 16-bittigen Register.
Da ist für die x86-64 (amd64, em64t) meist zutreffend. Der 32-Bit-Emulator (WoW64) den Microsoft entwickelt hat, sorgt dafür, dass die meisten 32-Bit-Anwendungen wie bisher funktionieren.

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 LuckieDIPS; siehe TLvItemBuffer), darf man nicht vergessen, dass es sich um die 64-Bit-Versionen der Strukturen handelt.

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 von Traudix:
(Bios-Interrupts, Farbpaletten-Einstellungen, Maussteuerung...) Hab auch paar Delphi Programme mit Assemblerteilen, wo sinngemäß das gleiche Problem vorliegt. Nun, wenn das später auf dem 64 Bitter kein Problem ist, brauche ich da nix zu ändern.
Es gibt keinen 16-Bit-Emulator (ntvdm) mehr!
Das ist mir bei BiosHelp auf die Füße gefallen. Ich musste eine Weile Suchen bevor ich eine Lösung für Win64 gefunden hatte (Microsoft musste eine neue API einführen um diese speziellen Bereiche auslesen zu können, da die bisherigen Methoden nicht mehr funktionierten).

Kurz: Es geht nicht ohne Tests auf einem echten Win64-System (sollte man seine Software nicht ohnehin auf den Zielplattformen testen )
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#10

Re: 32 Bit Programme auf 64 Bit Rechnern

  Alt 18. Nov 2005, 17:01
Zitat von NicoDE:
1) Schwierig wird es zum Beispiel dadurch, dass 32-Bit-Module nicht in 64-Bit-Prozesse geladen werden können.
[...]
2) Die Registrierung für 32-Bit-Anwendungen ist in die 64-Bit-Registrierung eingehängt.
Ich hatte eigentlich gehofft, von dir zu erfahren, wie die Beschränkungen der Architektur aussehen, nicht die der Windows-Prozessverwaltung. Oder bist du doch noch nicht so intim mit deinem x86-64 geworden?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz