32-Bit/64-Bit, Prozessor oder Betriebssystemabhängig?
-
Ich weiß, dass man einen 64-Bit Prozessor braucht, aber braucht man zur ausführung von 64 Bit Programmen auch zwingend ein 64-Bit System?
-
ja
-
??
Als ich noch mit Windows arbeitete, hatte ich auch nur eine 32-Bit-Version von windows, habe aber die 64-Bit Verdion von IDA verwendet.
Außerdem kann man bei DOS-Anwendungen auch die 32-Bit Register verwenden. Warumm sollte ein Programm nicht auch die 64-Bit Register/OP-Codes verwenden können.
-
RedEagle schrieb:
??
Als ich noch mit Windows arbeitete, hatte ich auch nur eine 32-Bit-Version von windows, habe aber die 64-Bit Verdion von IDA verwendet.Worum auch immer es sich dabei handelte, 64Bit-Code wird es sehr wahrscheinlich nicht ausgefuehrt haben.
RedEagle schrieb:
Außerdem kann man bei DOS-Anwendungen auch die 32-Bit Register verwenden. Warumm sollte ein Programm nicht auch die 64-Bit Register/OP-Codes verwenden können.
Weil es aus den 16/32Bit-Modi heraus schlicht nicht geht, frag mich nicht warum.
Um 64Bit-OpCodes nutzen zu koennen, muss man mit der CPU in den sog. "long mode" wechseln. Das klappt vielleicht unter DOS, so wie man dort auch in den 32Bit PM schalten konnte (hach, ist DOS doch flexibel :D), aber in 32Bit-OS kann das eigentlich nur durch Ausnutzen einer Schwachstelle und Aushebeln des Protected Mode passieren - also so nicht vorgesehen.
-
Nobuo T schrieb:
Weil es aus den 16/32Bit-Modi heraus schlicht nicht geht, frag mich nicht warum.
Um 64Bit-OpCodes nutzen zu koennen, muss man mit der CPU in den sog. "long mode" wechseln. Das klappt vielleicht unter DOS, so wie man dort auch in den 32Bit PM schalten konnte (hach, ist DOS doch flexibel :D),Das haben manche Compiler für DOS schon automatisch erledigt (z.b. DJGPP), daher vielleicht die annahme.
Nobuo T schrieb:
aber in 32Bit-OS kann das eigentlich nur durch Ausnutzen einer Schwachstelle und Aushebeln des Protected Mode passieren - also so nicht vorgesehen.
Oder man schreibt einen Treiber (falls das möglich ist), der in den Prozessscheduler eingreift und der dein Programm, wenn es dran ist, in den 64-Bit Modus befördert, und danach wieder heraus holt.
-
ProgChild schrieb:
Oder man schreibt einen Treiber (falls das möglich ist), der in den Prozessscheduler eingreift und der dein Programm, wenn es dran ist, in den 64-Bit Modus befördert, und danach wieder heraus holt.
meines wissens ist es nur möglich den prozessor vom real mode in den long mode zu schalten. einmal protected, immer protected
kann mich aber auch irren, ist schon lange her, dass ich damit rumgespielt habe
-
sothis_ schrieb:
meines wissens ist es nur möglich den prozessor vom real mode in den long mode zu schalten. einmal protected, immer protected
kann mich aber auch irren, ist schon lange her, dass ich damit rumgespielt habe
Also vom Protected-Mode weis ich, dass man da beliebig rein und wieder raus wechseln kann. Darum funktioniert das ja auch unter DOS. Wenn das Programm sich beendet, wechselt es wieder zurück in den 16-Bit Modus. Btw. GRUB macht das ziemlich intensiv, um im 32-Bit Modus auf BIOS-Funktionen zugreifen zu können.
Jetzt weis ich nicht, wie das im 64-Bit Modus aussieht. Hab mich damit noch nicht auseinander gesetzt.
-
sothis_ schrieb:
ProgChild schrieb:
Oder man schreibt einen Treiber (falls das möglich ist), der in den Prozessscheduler eingreift und der dein Programm, wenn es dran ist, in den 64-Bit Modus befördert, und danach wieder heraus holt.
meines wissens ist es nur möglich den prozessor vom real mode in den long mode zu schalten. einmal protected, immer protected
kann mich aber auch irren, ist schon lange her, dass ich damit rumgespielt habe
Weis ich gerade auch nicht. Wie auch immer: Da man wohl die Einteilung des phys. Speichers komplett neu machen muesste und dabei noch zusehen, dass nichts zerschossen wird... Ein Sprung ueber den RealMode koennte eine solche Angelegenheit wohl kaum noch viel lahmer und unsicherer machen.
ProgChild schrieb:
Also vom Protected-Mode weis ich, dass man da beliebig rein und wieder raus wechseln kann. Darum funktioniert das ja auch unter DOS. Wenn das Programm sich beendet, wechselt es wieder zurück in den 16-Bit Modus. Btw. GRUB macht das ziemlich intensiv, um im 32-Bit Modus auf BIOS-Funktionen zugreifen zu können.
Ja, der DPMI-Host (vom Sicherheitskonzept des PM her gesehen quasi das OS, in dem DPMI-Programme fuer DOS laufen) kann das einfach, bzw. was da sonst quasi als OS oder Kernel-Teil davon auf Ring 0 laeuft. Sonst geht das auch nicht.
Und der Wechsel RM<->PM ist in sofern auch eher wenig problematisch, da der RM ziemlich beschraenkt ist. Mit PM(<->RM)<->LM und den ganzen Speicher- und Schutz-Dingen waere das doch ein wenig was anderes.
-
Naja... mein Vorschlag war wohl mehr theoretischer Natur und wird sich wahrscheinlich nicht umsetzen lassen.
Der Grund, warum das nicht so einfach möglich ist, wird die Tatsache sein, dass ein 64-Bit Programm nicht einfach die Sicherheitsvorkehrungen eines 32-Bit-Betriebssystems umgehen können soll, das noch keine Ahnung von 64-Bit hat.