[Python-Dev] acceptability of asm in python code?
Tim Peters
tim.one@comcast.net
Sun, 09 Mar 2003 16:53:51 -0500
[damien morton]
> Its arguable which is more obscure, the x86 assembly instruction "jo"
> (jump if overflow), or the xor trickery in C. <wink>
It's not just the assembler, it's also the world of delicate assumptions
about how the compiler interleaves generated C code with the forced inline
assembler, how that affects optimization in general (see Chris Tismer's post
about that), and how brittle that all is. One example of the latter: an
idea that resurfaces from time to time is to make Python "short ints" the
platform spelling of a 64-bit int. The C overflow-checking code wouldn't be
affected by that (part of the reason it's obscure is that it makes no
assumption about the size of a Python int). With the inline assembler,
though, it would just break -- jo would pick up some accidental setting of
the overflow flag under MSVC, or we'd have to arrange to generate __int64
addition code that set the flag the way the macro expects. For a little
speedup on the sole operation(s) it targets, it's just not worth the ongoing
puzzles.
BTW, I'm not sure it's possible to buy a PC anymore less than twice as fast
as the one I'm using right now <wink>.
> I take your point, though, about there being no assembly in python now.
There's one place I wish there were: I wish Jeremy had time to fold in his
bit of assembler to read the Pentium's clock register. That's a wonderful
facility we can't get at now, and the assembler would be limited to a tiny
and isolated function.