GeirGrusom Skrevet 20. februar 2008 Skrevet 20. februar 2008 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.
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå