[Python-Dev] acceptability of asm in python code?
damien morton
dmorton@bitfurnace.com
Sun, 9 Mar 2003 00:00:09 -0500
> -----Original Message-----
> From: Tim Peters [mailto:tim.one@comcast.net]
> Sent: Saturday, 8 March 2003 22:42
> To: Damien Morton
> Cc: python-dev@python.org
> Subject: RE: [Python-Dev] acceptability of asm in python code?
>
>
> [Damien Morton]
> > In the BINARY_ADD opcode, and in most arithmetic opcodes,
>
> Aren't add and subtract the whole story here?
ADD, SUBTRACT and INPLACE variants, yes. Potentially also MULTIPLY.
> > there is a line that checks for overflow that looks like this:
> >
> > if ((i^a) < 0 && (i^b) < 0) goto slow_add;
> >
> > I got a small speedup by replacing this with a macro defined thusly:
> >
> > #if defined(_MSC_VER) and defined(_M_IX86)
>
> "and" isn't C, so I assume you were very lucky <wink>.
I had been using _MSC_VER, but decided to be a bit more specific for my
post. Youre right, of course, the define I posted would not have worked.
> > #define IF_OVERFLOW_GOTO(X) __asm { jo X };
> > #else
> > #define IF_OVERFLOW_GOTO(X) if ((i^a) < 0 && (i^b) < 0)
> goto X; #endif
> >
> > Would this case be an acceptable use of snippets of inline
> assembler?
>
> If you had said "a huge speedup, on all programs", on the
> weak end of maybe. "Small speedup" isn't worth the obscurity.
> Note that Python contains no assembler now.
Its arguable which is more obscure, the x86 assembly instruction "jo"
(jump if overflow), or the xor trickery in C. <wink>
I take your point, though, about there being no assembly in python now.