:?? Abwärtskompatibilität von 64-Bit Systemen zu 32-Bit SW

SomeDeadCoder

New member
Hallo,

ich habe eine Frage zu der Abwärtskompatibilität von 64-Bit Hardware zu
32-Bit Software. Folgendes: Kann ich ein 32-Bit Windows auf einem 64-Bit
System installieren? Laufen 32-Bit Programme auf 64-Bit Windows. Wenn
nicht, kann ich eine VM wie VMWare, MS Virtual Server, Bochs o.ä nehmen
um eine 32-Bit Umgebung zu simullieren?

Ich bin selber Programmierer und mir ist sehr wohl klar, was der Unterschied
zwischen 32 und 64 Bit sind (besonders im Bereich Assembler-Code), aber
ist in den Prozessoren eine "downward compatiblity" vorgesehen und wenn
ja, bis wo hin? :??

Danke schon mal...

Grüße

Ken

Grüße...
 

fr34k

New member
Ja man kann ein 32 bit Windows auf ein 64 bit System installieren.
mußt nur darauf achten 32 bit Treiber zuverwenden.

Ob 32 bit programme auf einem 64 bit System laufen kann ich nicht mit sicherheit sagen.

Beim Programmieren kann ich es dir nur aus der Sicht von C sagen.
Für Integer Zahlen sind bei 16 bit ein Zahlenbereichvon -32768 bis 32767 vorgesehen.
Bei einem 32 bit System erweitert sich der Bereich (-2147483648 bis 2147483647)
Bei einem 64 bit müßte er sich ebenfalls erweitern. (-18446744073709551616 bis 18446744073709551615)

Zudem ist dies meist noch vom Compiler abhängig.
 

SomeDeadCoder

New member
Ja,

mit dem Programmieren ist mir das voll und ganz klar. Ich programmiere in ettlichen Sprachen, aber habe noch nichts für Systeme mit 64-Bit gemacht. Ist ja auch nicht anders, bis auf Assembler, da sieht die Welt schon anders aus!

Danke für die Antwort...

Grüße!
 

fr34k

New member
naja anderst nicht gerade

alle sprachen dieser welt werden auf assembler (maschinen code) zurück geführt.
daher sollte dies assembler mit dem richtigen compiler auch verstehen.
 

SomeDeadCoder

New member
fr34k hat gesagt.:
naja anderst nicht gerade

alle sprachen dieser welt werden auf assembler (maschinen code) zurück geführt.
daher sollte dies assembler mit dem richtigen compiler auch verstehen.
Hallo,

was ich meinte, war auch, das Hochsprachen "meistens" ohne größeren
Aufwand auf beiden Systemen kompiliert werden können, sogar auf
unterschiedlichen Architekturen, was aber bei Asm nicht der Fall ist.
Auch bei Hochsprachen krigt man Probleme (Inline-Assembler & Co) oder
wenn man bestimmte Konvetionen benutz, oder mit Bits arbeitet. Aber das
kennst Du ja auch sicherlich...

Grüße...
 

fr34k

New member
c ist nicht gerade ne hochsprache

als hochsprache würde ich jetzt java oder html ansehen.

aber was willst du auf 64 bit basis programmieren in ASM ?
nimm doch lieber ne höhere sprache und lass dir das dann übersetzen bzw für asm gibt es bestimmt pre-compiler die dir das richtig machen auf 64 bit basis
 

Coolface

New member
Also, ich habe ein 64 Bit Linux bei mir am Laufen und ja, generell ist eine x86_64 CPU zu 32 Bit abwärtskompatibel, auch wenn sie sich gerade im 64 Bit Mode befindet, also nen 64 Bit BS am Laufen hat, das ist gerade das Besondere an dem x86_64 Befehlssatz. Das Problem sind nur die Abhängigkeiten die ein 32 Bit Programm benötigt, sprich Libraries. Aus diesem Grund hat Windows XP 64-Bit einen normalen Windows Ordner und einen Windows32 Ordner, der praktisch das gleiche inheriert nur für 32 Bit Systeme übersetzt. Ähnliches gilt auch bei Linux.
Zudem würde ich sehr wohl C als eine höhere Sprache ansehen. HTML dagegen ist nicht mal eine Sprache. Generell kann man jede Sprache genauso zum Schreiben benutzen wie bei 32 Bit, müssen halt für 64 Bit kompiliert werden.

64 Bit Assembler ist wie gesagt ne Sotry für sich. Da sind es nicht nur die größeren Register, sondern halt auch erweiterte Befehle etc...
 
Um einige fachliche Fehler auszubessern:
Inline-Assembler ist keine Hochsprache,
C ist sehr wohl eine Hochsprache.
Als "Höhere Programmiersprache" gilt jene Programmiersprache, die komplexe Strukturen wie For-, While-, ... Schleifen ermöglicht, Datentypen unterscheiden kann und auch hochkomplexe Datenstrukturen (Funktion, Feld, Record) versteht.
Inline-Assembler ist (wie der Name schon sagt) ganz normaler Assembler-Code, der durch zahlreiche Headers einfach um Funktionen erweitert wird. Dabei werden aber diese "komplexen" Strukturen lediglich mit reinem Asm-Code ersetzt. Multiplikationen z.B., die ja in Asm nicht implementiert sind, werden dann mit Additionen "umschrieben" und somit ist der kompilierte Code reiner Maschinencode.
So, das wars von meiner Seite mit Belehrungen ;-)
 

Wemaxx

New member
Um einige fachliche Fehler auszubessern:
Inline-Assembler ist keine Hochsprache,
C ist sehr wohl eine Hochsprache.
Als "Höhere Programmiersprache" gilt jene Programmiersprache, die komplexe Strukturen wie For-, While-, ... Schleifen ermöglicht, Datentypen unterscheiden kann und auch hochkomplexe Datenstrukturen (Funktion, Feld, Record) versteht.
Inline-Assembler ist (wie der Name schon sagt) ganz normaler Assembler-Code, der durch zahlreiche Headers einfach um Funktionen erweitert wird. Dabei werden aber diese "komplexen" Strukturen lediglich mit reinem Asm-Code ersetzt. Multiplikationen z.B., die ja in Asm nicht implementiert sind, werden dann mit Additionen "umschrieben" und somit ist der kompilierte Code reiner Maschinencode.
So, das wars von meiner Seite mit Belehrungen ;-)
Owned :rulez:
Gott segne uns ;)