Zadna bzdura ;]
Ten ponizszy przyklad troche miesza, a nie o to mi chodzilo, ale przyjrzyj sie dokladnie na dissasmie co sie wyprawia z wynikiem mnozenia dwoch liczb 64bit:
main:
push ebp
mov ebp, esp
and esp, -16
sub esp, 32
mov DWORD PTR [esp+24], 0
mov DWORD PTR [esp+28], 268435456
mov DWORD PTR [esp+16], 286331153
mov DWORD PTR [esp+20], 286331153
mov eax, DWORD PTR [esp+28]
mov ecx, eax
imul ecx, DWORD PTR [esp+16]
mov eax, DWORD PTR [esp+20]
imul eax, DWORD PTR [esp+24]
add ecx, eax ; tu
mov eax, DWORD PTR [esp+16]
mul DWORD PTR [esp+24]
add ecx, edx ; tu
mov edx, ecx ; i tu
cmp edx, DWORD PTR [esp+20]
jl .L2
cmp edx, DWORD PTR [esp+20]
jg .L5
cmp eax, DWORD PTR [esp+16]
jbe .L2
.L5:
mov ecx, OFFSET FLAT:.LC0
mov eax, DWORD PTR [esp+24]
mov edx, DWORD PTR [esp+28]
mov DWORD PTR [esp+4], eax
mov DWORD PTR [esp+8], edx
mov DWORD PTR [esp], ecx
call printf
.L2:
mov eax, 0
leave
ret