Re: [fpc-pascal] Invalid combination of opcode and operands

2026-02-23 Thread Adriaan van Os via fpc-pascal

Marco van de Voort via fpc-pascal wrote:


Op 23-2-2026 om 17:40 schreef Adriaan van Os via fpc-pascal:


I should add that SourceBuffer is an argument to a function, so I 
assume it to be a full address, not an offset.


procedure MyProc( SourceBuffer: Pointer);

Try adding the "rip+". Most 64-bit OSes don't use 64-bit immediate 
values because they are huge to encode.


Most use RIP relative addressing,.


Same error:

 MOVSS xmm2,[rip+SourceBuffer]  <--- Asm: [movss xmmreg2,mem64] invalid combination of opcode 
and operands


Regards,

Adriaan van Os


___
fpc-pascal maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Invalid combination of opcode and operands

2026-02-23 Thread Marco van de Voort via fpc-pascal



Op 23-2-2026 om 17:40 schreef Adriaan van Os via fpc-pascal:


I should add that SourceBuffer is an argument to a function, so I 
assume it to be a full address, not an offset.


procedure MyProc( SourceBuffer: Pointer);

Try adding the "rip+". Most 64-bit OSes don't use 64-bit immediate 
values because they are huge to encode.


Most use RIP relative addressing,.

___
fpc-pascal maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Invalid combination of opcode and operands

2026-02-23 Thread Adriaan van Os via fpc-pascal

Marco van de Voort via fpc-pascal wrote:



Was this code meant for 64-bit or 32-bit, and are you running it on the 
same architecture where you originally tested/used it?


This because the sourcebuffer seems to indicate [mem64], which sounds 
like target 64-bit intel, which might expect a rip relative addressing like


MOVSS xmm2,[rip+SourceBuffer]

But if the code was originally 32-bit the original expression would have 
been valid.


I should add that SourceBuffer is an argument to a function, so I assume it to be a full address, 
not an offset.


procedure MyProc( SourceBuffer: Pointer);


Regards,

Adriaan van Os

___
fpc-pascal maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Invalid combination of opcode and operands

2026-02-23 Thread Adriaan van Os via fpc-pascal

Marco van de Voort via fpc-pascal wrote:


Op 23-2-2026 om 16:35 schreef Adriaan van Os via fpc-pascal:


The following error message seeems to be new for fpc-3.3.1 (using 
-RIntel)




@Remainder_1:
 MOV   Length,EBX
 AND   Length,1
 JZ@TheEnd
 MOVSS xmm2,[SourceBuffer] <--- Asm: [movss xmmreg2,mem64] invalid 
combination of opcode and operands

 MINSS xmm0,xmm2
 MAXSS xmm1,xmm2


Has anything changed here ?

Disclaimer:  I don't known 100% how OS X handles the analogue, so 
assuming windows for a moment.


This is on macOS indeed, originally for Windows only, later ported to macOS. Strangely, the code 
still has MS_ABI_Default in the code. I were told, this was needed for 32-bit x86.




Was this code meant for 64-bit or 32-bit, and are you running it on the 
same architecture where you originally tested/used it?


This because the sourcebuffer seems to indicate [mem64], which sounds 
like target 64-bit intel, which might expect a rip relative addressing like


MOVSS xmm2,[rip+SourceBuffer]

But if the code was originally 32-bit the original expression would have 
been valid.


The code was originally for 32-bit x86, yes but 32-bit is no longer built now.

An older FPC compiler accepts the assembly (but I am not trying to say that the 
asm is correct ...)

Regards,

Adriaan van Os
___
fpc-pascal maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Invalid combination of opcode and operands

2026-02-23 Thread Marco van de Voort via fpc-pascal


Op 23-2-2026 om 16:35 schreef Adriaan van Os via fpc-pascal:


The following error message seeems to be new for fpc-3.3.1 (using 
-RIntel)




    @Remainder_1:
 MOV   Length,EBX
 AND   Length,1
 JZ    @TheEnd
 MOVSS xmm2,[SourceBuffer] <--- Asm: [movss xmmreg2,mem64] invalid 
combination of opcode and operands

 MINSS xmm0,xmm2
 MAXSS xmm1,xmm2


Has anything changed here ?

Disclaimer:  I don't known 100% how OS X handles the analogue, so 
assuming windows for a moment.


Was this code meant for 64-bit or 32-bit, and are you running it on the 
same architecture where you originally tested/used it?


This because the sourcebuffer seems to indicate [mem64], which sounds 
like target 64-bit intel, which might expect a rip relative addressing like


MOVSS xmm2,[rip+SourceBuffer]

But if the code was originally 32-bit the original expression would have 
been valid.



___
fpc-pascal maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal