Florian Klaempfl wrote 69 lines
Bartek wrote:
>Vincent Snijders wrote:
>
>
>
>>Bartek wrote:
>>
>>
>>
>>>Jonas Maebe wrote:
>>>
>>>
>>>
>>>>On 7 aug 2005, at 21:29, Bartek wrote:
>>>>
>>>>
>>>>
>>>>>I am compiling my sources under win32 for win32 with Lazarus.
>>>>>And my source codes and the "tcl80.pas" has compiled fine with
>>>>>earlier versions of fpc. I only updated the fpc source from svn,
>>>>>compiled it, copied over the existing in Lazarus, and rebuild Lazarus.
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>Maybe it uses the "direct" assembler reader (which is basically
>>>>"text substitution" and is incompatible with the binary object
>>>>writer). Change it to use the AT&T assembler reader instead.
>>>>
>>>>
>>>>
>>>>
>>>But when you look at the "tcl80.pas" source the {$ASMMODE} switch is
>>>defined. Anyway i told Lazarus to use the Intel style asm syntax. The
>>>problem is that i only updated the version of the fpc compiler. I
>>>didn't change any settings like the compiler settings, which worked
>>>fine for my sources and the tcl header. Therefore i am very
>>>surprised that this doesn't work anymore.
>>>
>>>[...]
>>>{$ifdef i386}
>>> {$ASMMODE INTEL}
>>>{$endif i386}
>>>[...]
>>>
>>>
>>>
>Thanks, now it works ;) . But now i get an "[...] Error: Invalid
>combination of opcode and operands" when compiling this piece of my code:
>
>{$asmmode Intel}
>[...]
>operator * (s1: single; v1 :vector4) v_r:vector4;assembler;
>asm
>movups xmm0, [v1]
>movups xmm1, [s1]
>shufps xmm1, xmm1, 00000000b
>mulps xmm0, xmm1
>movups [v_r], xmm0
>end;
>[...]
>
>1. This worked fine before updating.
>
>
Sorry, I forgot to mention where the error happens.
{$asmmode Intel}
[...]
operator * (s1: single; v1 :vector4) v_r:vector4;assembler; asm
movups xmm0, [v1]
movups xmm1, [s1]
-> shufps xmm1, xmm1, (here)|00000000b
mulps xmm0, xmm1
movups [v_r], xmm0
end;
[...]
There aren't any memory operands.
"Newer compilers are more strict regarding this and require a size modifier for the memory operands." But the current fpc didn't complain about the previous instructions?!