Autor Thema: 64-Bit, hat schon jemand rumprobiert?  (Gelesen 4816 mal)

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« am: 27. January 2005, 16:46 »
Hi Leute.

Kurz vorneweg:
Bin endlich wieder da. Gruß an alle die sich noch an mich erinnern... :lol:
Ich war ein 3/4 Jahr nicht hier, hatte einen riesigen Programmier-Job und hab Tag und Nacht gearbeitet. Aber nun hab ich wieder Zeit und nehme mein eigenes OS wieder auf die Tagesordnung.


Aber jetzt meine Frage an Euch:
Hat sich schon jemand mal mit EM64T bzw. AMD64 beschäftigt? Ich meine mal reingelesen oder schon was probiert?
Ich bin gerade dabei mich dort hineinzulesen (mein schlechtes English wird tatsächlich besser um so mehr ich in den Intel-Docs lese).
Ich bin nämlich etwas iretiert wenn ich solche Sachen lese wie z.B.

"... because hardware task-switching is not supported in long mode."

Aber ein einzelnes TSS gibt es anscheinend immer noch.
Hat da schonmal jemand drüber nachgedacht, oder betrete ich hier für alle Neuland?

Gruß BigOlly
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #1 am: 27. January 2005, 17:57 »
Ich hab bisher nur die Theoretischen Möglichkeiten von EMT64 (NX-Bit etc) mal angelesen.

Gearbeitet hab ich mangels eines solchen Prozessors noch nicht.
----------------------
Redakteur bei LowLevel

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 27. January 2005, 17:58 »
Man könnte höchstens mit Bochs den 64Biter Emulieren und damit testen^^
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 27. January 2005, 18:14 »
Kann Bochs das schon? Ich arbeite selber nicht mit Bochs sondern mit echten PCs.
Haltet mich für verrückt, aber ich habe in den letzten 2 Wochen alles was ich an alter Hardware noch hatte herausgekramt und zusammen geschraubt. Außerdem habe ich mir zum Jahreswechsel einen zweiten Arbeitsrechner gegönnt. Jetzt steht hier ein Pentium 1 mit 233MHz, ein Dual-Pentium III (ich probiere gerade etwas rum mit Multiprozessor-PCs), ein Pentuim IV HT und ein Atlon64.
Ich denke das ich so am besten testen kann ob das was ich progge auch auf verschiedenen Rechnern läuft.


Aber mal zu AMD64:
Laut dem was ich gelesen hab gibt es im Long-Mode nur noch ein TSS. Und die Segmentregister CS,DS und ES werden "gleichgeschaltet", also DS und ES werden nicht benutzt sondern nur CS. Alles sehr ominös, ich hoffe ich finde noch anderes Material im Netz darüber als "nur" die Intel und AMD-Docs.

Wenn das stimmt was ich verstanden habe dann muss es auch ziemlich starke Änderungen im 64-Bit Windows und Linux gegeben haben, alles was mit dem Task-Switching zu tun hat dürfte omplett neu geprogtt worden sein....
...vielleicht schnall ich das aber blos alles noch nicht so richtig...
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #4 am: 28. January 2005, 00:59 »
Wäre gut möglich das sich da viel geändert hat.

Sonst würde es ja auch nicht so lange dauern bis WinXP64 rauskommt :)
----------------------
Redakteur bei LowLevel

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 28. January 2005, 10:47 »
Nunja die Linuxer haben aber nicht gerade lange gebraucht um den Kernel zu portieren...

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #6 am: 28. January 2005, 12:17 »
Bochs kann das definitiv, hab ja ein Bochs das auch die AA-64 emulieren kann^^ aber muss Bochs auch so compiled sein.
bei sandpile (linkliste) steht einiges zur AA-64 wer Intresse hat auch mal da schauen. Steht viel über die Register (R0-R15, 16 64Bit Register geil oder? kein Mangel mehr an Registern, weniger variablen zwischenspeichern usw). Dort ist aber auch sichbar dass es cs ds ss fs gs weiter gibt.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 28. January 2005, 18:10 »
Ich versteh nicht ganz wozu das eine TSS gut ist wenn es kein Hardware-Multitasking mehr gibt... *grübel*

Und ja, DS und ES gibt es noch, aber die sind gleichgeschaltet mit CS.
Wenn die Applikation in einem riesigen flat-Speicherbereich läuft, wie es im Long-Mode ja anscheindend vorgesehen ist, dann ist das auf den ersten Blick zu verstehen, aber das hiesse ja auch das Code und Daten nicht mehr "voreinander geschützt" sind, denke ich....
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #8 am: 28. January 2005, 18:22 »
Den (Schreib-)Schutz kann man ja mit Paging realisieren, was auch heute schon meistens der Fall ist, weil es einfach bessere Unterscheidungen ermöglicht als mit den Descriptoren, und zu Not hat man noch fs und gs oder sind auch die gleichgeschaltet?
Passt noch jemandem der Begriff "Gleichschaltung" hier nicht? Ich verbinde das irgendwo negativ mit was anderem.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

BigOlly

  • Beiträge: 88
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 28. January 2005, 18:43 »
Also, wenn jemand was erklärt bekommt und es SOFORT versteht, dann hat er "gleich ge schaltet"...   :lol:

Okay, zum Ernst der Bits:
Hier mal zwei Zitate aus der AMD64-Dok:

"The DS, ES, and SS segments are ignored in 64-bit mode."

"Segmentation is disabled in 64-bit mode.
...
In data-segment descriptors referenced by the DS, ES and
SS segment registers, the base-address field is ignored.
For the purpose of virtual-address calculations, the base address
is treated as if it has a value of zero."

*alles sehr merkwürdig*
====================================================
Zitat: "Es ist schwierig zu antworten, wenn man die Frage nicht versteht."
(würde mich ja mal interessieren ob jemand weiß woher dieser Satz stammt...)

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #10 am: 28. January 2005, 19:07 »
Vielleicht so wie alle Segmentregister zeigen automatisch auf was 4GB langes mit Basis 0. Wird ja meistens eh so gemacht.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 28. January 2005, 19:15 »
Zitat (aus Deinmeister.de):
Zitat
Um den Long-Mode wirklich zu aktivieren, muß allerdings auch die Abbildung linearer zu physikalischen Addressen per Paging verwendet werden. Dies liegt darin begründet, daß der Long-Mode sämtlichen Speicherschutz (ebenso wie alle aktuelle Betriebsysteme) allein über das Paging realisiert.

Zitat
Der Speicherschutz über Deskriptoren und Segmentregister ist wie gewohnt in x86-16- und 32-Bit Segmenten verfügbar, aber nicht im x86-64-Code. Da x86-64 nur ein flaches Speichermodell unterstützt, werden DS, ES und SS vollständig ignoriert, bei FS und GS werden nur die entsprechenden Basisaddressen berücksichtigt, so daß diese beiden als zusätzliches Basisregister dienen (Grund: Win32 u.a. verwenden sie, dadurch soll wohl die Portierung nach x86-64 beschleunigt werden).


Merkwuerdigkeiten beseitigt? *lach*

Gruesse Svenska

clemensoft

  • Beiträge: 92
    • Profil anzeigen
    • http://www.clemensoft.de
Gespeichert
« Antwort #12 am: 28. January 2005, 22:53 »
Nanocore ist jetzt halb 64-Bit, mehr so 48-bit  :?

 

Einloggen