|

19.09.2009, 07:52
|
| |
Eigendlich vergrößern die 64bit nur die Register. Das heißt, dass sie größere(und genauere) Berrechnungen vornehmen können. Durch das größere Stack Register, kann dann mehr Speicher verwendet werden. Geschwindigkeitsvorteile sind minimal, da beim Arbeiten mit 64bit Zahlen, sie nicht in 2 Register verteilt werden müssen, und so in einem Arbeitsgang berrechnet werden.
Hier mal was für leute die sich auskennen. Addieren zweier 64bit werte. Das erste als 64bit code, das zweite 32bit. Code: 12: long i = 1;
mov qword ptr [rsp+20h],1
13: i = i + 2;
mov rax,qword ptr [rsp+20h]
add rax,2
mov qword ptr [rsp+20h],rax Code: 12: long i = 1;
mov dword ptr [ebp-44h],1
mov dword ptr [ebp-40h],0
13: i = i + 2;
mov eax,dword ptr [ebp-44h]
mov edx,dword ptr [ebp-40h]
add eax,2
adc edx,0
mov dword ptr [ebp-44h],eax
mov dword ptr [ebp-40h],edx Wie man vieleicht sehen kann, wird in code1 nur das register rax, und in code 2 die reigster eax und edx genommen.
Einen richtigen Geschwindigkeitsvorteil kann man durch die kleinen änderungen nicht bekommen
|