Message82364
| Author |
mark.dickinson |
| Recipients |
christian.heimes, collinwinter, gregory.p.smith, jyasskin, loewis, mark.dickinson, pitrou, schuppenies, vstinner |
| Date |
2009年02月17日.20:30:56 |
| SpamBayes Score |
0.07838572 |
| Marked as misclassified |
No |
| Message-id |
<1234902658.51.0.32800029365.issue4258@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
> unsigned long long m(unsigned long long a, unsigned long b)
> {
> return a*b;
> }
I think that's doing a 32 x 64 -> 64 multiplication; what's being used is
more like this:
unsigned long long m(unsigned long a, unsigned long b)
{
return (unsigned long long)a*b;
}
which gcc -O3 compiles to:
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
mull 8(%ebp)
leave
ret |
|