Gå til innhold

oppgradere fra 32 til 64 bit? lov?


Anbefalte innlegg

Skrevet

Hovedsaklig adressebredden.

En 64-bit prosessor kan teoretisk sett adresse opp til 8 exabyte med RAM (praktisk grense ligger nå på 48-bit), en 32-bit prosessor kan adressere 4 gigabyte.

Dette gjør også at 64-bit heltall kan behandles i én operasjon, istedet for flere.

 

PÅ en 32-bit prosessor, må man teste om man får overflow ved operasjon på 64-bit tall.

På en 32-bit prosessor består derfor et 64-bit tall av 2 32-bit tall

 

32-bit:
lea ebx, dst; Hent adressen til resultat inn i ebx
lea ecx, src; Hent adressen til kilden inn i ecx
mov eax, 3999000000; Sett inn et latterlig høyt tall i eax
add eax, dword ptr [ecx]; Legg til verdien i src til eax
mov dword ptr [ebx], eax; Sett resultat av første operasjon til dst
xor eax, eax
add ecx, 4; Legg til 32-bit i adressen
add ebx, 4; ditto
adc eax, dword ptr [ecx];Add with carry, legger til CF
mov dword ptr [ebx], eax;Lagre resultatet i minnet

64-bit:

 

lea rb, dst; Load effective address
lea rc, src 
mov ra, qword ptr [rc]; Hent verdien fra pekeren rc
add ra, 3999000000; Legg til et stort tall
mov qword ptr [rb], ra; Lagre verdien i dst

 

Så man sparer en del sykluser ved behandling av 64-bit tall.

Dette forutsetter selvsagt at programmet er skrevet for en 64-bit prosessor.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...