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.

Reply via email to