[pypy-dev] Re: OT: abs(x) with 4 assembly insns
Bob Ippolito
bob at redivi.com
Mon Sep 29 15:23:44 CEST 2003
On Monday, Sep 29, 2003, at 09:13 America/New_York, Christian Tismer
wrote:
> Michael Hudson wrote:
>
>> Christian Tismer <tismer at tismer.com> writes:
> ...
>
>>> Hmm. 4 insns.
>> Or you can cheat, and remember that you saw something like this in
>> some psyco header file somewhere...
>
> No, I couldn't. Armin was referring to it, and I wanted
> to find out by myself. He told me about the exhaustive
> search, which I found funny.
>
>> /* as you can check the following takes the absolute value of (say)
>> EAX: \
>> ADD EAX, EAX
>> \
>> SBB EAX, sourcecopy
>> \
>> SBB EDX, EDX
>> \
>> XOR EAX, EDX
>> \
>> (note: although the idea is not original, the above code might be
>> \
>> original as it has been found by an exhaustive search on *all*
>> \
>> short codes :-)
>> \
>> */
>> \
>
> Actually, the above is not correct since it needs
> 5 insns. Armin didn't count the sourcecopy.
>
> My solution really has four insns, but it is
> cheating since it *needs* the register eax.
>
>> I don't know x86 assembler, so I have no idea which of the two code
>> sequences are actually likely to run quicker on a modern processor.
>
> I guess they are almost the same speed.
Ah, the joys of x86. It's amazing that so many people still use such a
braindead ISA :)
-bob
More information about the Pypy-dev
mailing list