![](https://secure.gravatar.com/avatar/b932b1e5a3e8299878e579f51f49b84a.jpg?s=120&d=mm&r=g)
On Monday, Sep 29, 2003, at 09:13 America/New_York, Christian Tismer wrote:
Michael Hudson wrote:
Christian Tismer <tismer@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