[Pythonmac-SIG] calldll: float values?

Jack Jansen jack@oratrix.nl
Fri, 26 Nov 1999 16:52:11 +0100


> I'm trying to use calldll to make an interface to the QD3D library. 
> (Actually, my evil plan is to get it started and then turn it over to 
> Scott Harris.)  I've run into a hitch: calldll doesn't seem to 
> understand floats, and QD3D uses floats all over the place -- both as 
> parameters, and as return values.

I didn't do floats for calldll because the PPC calling convention for floating 
point arguments is different from that for integer arguments. If I remember 
correctly (but it's been some time) the float arguments are passed in floating 
registers in stead of in int registers.

Or, in other words, if a routine has a float argument but I call it (without 
prototypes in scope, etc etc) with an int argument it will receive garbage, 
_not_ the bitpattern that happens to be in the integer. There are apparently 
ways around this (otherwise printf() couldn't be made to work), but I punted 
on it at the time. If someone understands the calling sequence (it's described 
somewhere in Inside Mac, I think it used to be called PowerPC Software or some 
such, and probably also in the CodeWarrior documentation) and explains it to 
me I'll happily add floating point support to calldll.
--
Jack Jansen             | ++++ stop the execution of Mumia Abu-Jamal ++++
Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++
www.oratrix.nl/~jack    | see http://www.xs4all.nl/~tank/spg-l/sigaction.htm