sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #86736
Re: Installation af 32bit SuSE på en EM64T processor
On Tue, Jan 10, 2006 at 16:26:58 +0100, Martin Berg wrote:
> Klaus S. Madsen wrote:
> >On Tue, Jan 10, 2006 at 15:48:37 +0100, Martin Berg wrote:
> >
> >Det er da også tilfældet på en EM64T. Når CPU'en er i 64-bit mode, har
> >den 16 register i alt, som hver er 64-bit brede. Om data-bussen fra
> >CPU'en er 64-bit bred, ved jeg dog ikke. Men ord-bredde og addressering
> >er 64-bit.
>
> Øh - ordbredden (altså bredden af de data, som CPU'en arbejder med)
> er da ikke 64-bit - det er da kun adressehåndteringen, som er 64 bit.
> Hvis ordbredden havde ændret sig ville det have massive konsekvenser
> for alle programmer og x86_64 (også kaldet IA32-64 hos Intel) er jo
> i det store og hele binærkompatibel med x86 (IA32).
Ja. Og det har det da også massive konsekvenser for instruktionssættet.
Når du booter en x86_64 booter den op i real-mode, hvor alt er lige som
i en 8086. For en x86 skifter OS'et så over til protected mode (32-bit),
hvor det så er muligt at bruge 32-bit brede instruktioner. Det er så
muligt at slå CPU'en over i Virtuel 8086 mode, hvor den kan eksekvere
16-bit koden.
Det er precist samme trick i en x86_64. Der hedder 64-bit tilstanden
(med 64-bit brede registre) bare for long mode. Og fra den kan man så gå
ned i 32-bit mode.
Så en x86_64 har 3 forskellige instruktions sæt, med 3 forskellige
bitbredder.
Det betyder også at hvis du har oversat et program til x86_64, så kan du
ikke køre det på en x86, mens det omvendte er muligt.
> De 16 registre, som du taler om, er det ikke registre primært til
> adresseringsformål ?
Jeg mener at det er general purpose registre. Dvs. instruktions-sættet
til en x86_64 er mere RISC-agtigt end til x86 :-)
> >Det lyder også lidt underligt for mig, men det kan være på grund af at
> >den har dobbelt så mange registre som en almindelig Intel. Dvs. så er
> >det ikke nær så tit at man bliver nødt til at placere en værdi i RAM,
> >fordi man er løbet tør for registre. Det tror jeg nu heller ikke på er
>
> Det ville vel også kræve programmel, som var oversat med en
> compiler, som udnyttede disse ekstra registre ?
Jeps.
> >grunden, for moderne IA32 maskiner opererer internt med flere registre
> >end externt, så det burde ca. blive det samme.
>
> Og under alle omstændigheder ville det være en forskel, som ikke
> havde sin rod i forskellen mellem 32 og 64 bits adressering.
Men det kunne jo skyldes forskellen imellem 32 og 64 bits aritmetik
(selvom det sjældent benyttes).
--
/-----------------------------------------------------\
| Klaus S. Madsen | "Ruurgggghhhh urrgh urgh; |
| | (uh ruh) ruuruuh ug." |
| www.hjernemadsen.org | - Douglas Adams, TRATEOTU |
\-----------------------------------------------------/
References