[fpc-pascal] error msg: "Selected asm reader not supported"

Bartek bbartek at gmx.net
Mon Aug 8 17:29:34 CEST 2005



Florian Klaempfl wrote:

>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?!






More information about the fpc-pascal mailing list