On Tue, Sep 29, 2015 at 12:40 AM, Martin Nilsson (Opera Mini - AFK!) @ Pike (-) developers forum <10...@lyskom.lysator.liu.se> wrote: > Well, I didn't actually change the order. But I see that the code in > cpulib outputs them differently depending on which assembler code is > used, which is bad of course. Fixing that should make ia32 work with > all compilers.
Ah, I didn't notice that it varied according to which assembler is being used. What I saw was this: #ifdef CL_X86_ASM_STYLE __asm { mov eax, oper; mov edi, cpuid_ptr; cpuid; mov [edi], eax; mov [edi+4], ebx; mov [edi+8], edx; mov [edi+12], ecx; }; which definitely stashes them into memory in order EAX/EBX/EDX/ECX, which corresponds to the comment. I'm not familiar with the other syntax, which uses =a, =r, =c, =d, but since you switched those, I'm assuming they correspond to the Accumulator, Result??, Counter, and Data registers. Thanks! ChrisA