A peculiar behavior; on linux x86_64; the op_argsize[] check near the top of VM_Compile() returns always true for == 4 or other but not for == 1. This is apparent from the debugging file when DEBUG_VM, since OP_ARG is always printed with 8 spaces and in a decimal form per the == 4 check.
Now, I stumbled on that because I found the printing of OP_ARG in the debug log is the *only* part of it that differs between linux x86_64 and windows x86_64 here [it prints normally in hex there per the op_argsize[op] == 1 check . And what's puzzling is that vm works on linux but not on windows. 2010/2/13 Michael Menegakis <[email protected]>: > 2010/2/13 Ryan C. Gordon <[email protected]>: >> >>> Quite possibly, since there is some x86 assembly in the VM. >> >> Fwiw, 64-bit Linux clients work, so it's not strictly an x86 asm thing >> (although, it's totally possible we hit a different set of #ifdefs for >> win64). >> >> Is this with Visual Studio, or the GNU compiler? > > This is mingw-w64 as MS C compiler doesn't even support inline > assembly in 64bit. > > I suspect this may be related: > > WIN x86_64 ABI: "The registers RCX, RDX, R8, R9 are used for integer > and pointer arguments (in that order left to right), and XMM0, XMM1, > XMM2, XMM3 are used for floating point arguments." > > POSIX x86_64: "The registers RDI, RSI, RDX, RCX, R8 and R9 are used > for integer and pointer arguments while XMM0, XMM1, XMM2, XMM3, XMM4, > XMM5, XMM6 and XMM7 are used for floating point arguments. " > > RDI and RSI seem out of place, > > Infrmation from mingw-w64: > http://sourceforge.net/apps/trac/mingw-w64/wiki/MinGW%20x64%20Software%20convention > > Microsoft: http://msdn.microsoft.com/en-us/library/zthk2dkh.aspx > _______________________________________________ ioquake3 mailing list [email protected] http://lists.ioquake.org/listinfo.cgi/ioquake3-ioquake.org By sending this message I agree to love ioquake3 and libsdl.
