Re: [fpc-pascal] FPC ARM inline Assembler

2023-04-07 Thread Jeppe Johansen via fpc-pascal

On 4/6/23 17:36, Sven Barth via fpc-pascal wrote:


If so what is the equivalent ARM command for {$ASMMODE intel}


There is none, because only one syntax is supported.


Not entirely true. Two ARM assembly syntaxes are supported: "divided" 
(pre-UAL) and unified (UAL).


Maybe not all aspects of either syntax are supported. Especially 
NEON/Advanced SIMD stuff might not be supported.


Best Regards,
Jeppe
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] FPC ARM inline Assembler

2023-04-06 Thread Sven Barth via fpc-pascal
Vern via fpc-pascal  schrieb am Do., 6.
Apr. 2023, 19:06:

> After reading the FPC manual more closely , the correct compiler command
> is {$ASMMODE default} where* default *is the native system ... in this
> case Orange Pi arm64 and the compiler now allows accepting ARM assembler
> instructions
>

You don't need to use the $ASMMODE directive on non-x86 platforms, because
the default syntax will always be selected. Also it's always possible to
add assembly code.

Regards,
Sven
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] FPC ARM inline Assembler

2023-04-06 Thread Vern via fpc-pascal

Works now!

Many Thanks
Vern

On 06/04/2023 1:43 p.m., Jonas Maebe via fpc-pascal wrote:

On 06/04/2023 19:06, Vern via fpc-pascal wrote:
.. the ARM version fails (similar code : ignore the fact it 
is the reverse of BSR) ... what am I missing ?


procedure MSBitTest ( DataIn : longword);
var
  MSBit : longword;

begin
  asm
   clz w4 , DataIn
   mov MsBit , w4
  end;
end;


ARM is a load/store architecture, which means it only supports 
operations on values loaded in registers. Local variables are always 
allocated on the stack in procedures/functions with inline assembler 
blocks, so you need to use the "str" instruction to store w4 into 
MsBit. "mov" only works for register-register transfers on ARM.



Jonas
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] FPC ARM inline Assembler

2023-04-06 Thread Jonas Maebe via fpc-pascal

On 06/04/2023 19:06, Vern via fpc-pascal wrote:
.. the ARM version fails (similar code : ignore the fact it is 
the reverse of BSR) ... what am I missing ?


procedure MSBitTest ( DataIn : longword);
var
  MSBit : longword;

begin
  asm
   clz w4 , DataIn
   mov MsBit , w4
  end;
end;


ARM is a load/store architecture, which means it only supports 
operations on values loaded in registers. Local variables are always 
allocated on the stack in procedures/functions with inline assembler 
blocks, so you need to use the "str" instruction to store w4 into MsBit. 
"mov" only works for register-register transfers on ARM.



Jonas
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] FPC ARM inline Assembler

2023-04-06 Thread Vern via fpc-pascal
After reading the FPC manual more closely , the correct compiler command 
is {$ASMMODE default} where/default /is the native system ... in this 
case Orange Pi arm64 and the compiler now allows accepting ARM assembler 
instructions.


However it won't allow referencing a Pascal variable.

Here is an example (32-bit) of x86 inline assembler that works correctly

procedure MSBitTest ( DataIn : longword);
var
 MSBit : longword;

begin
 asm
  bsr eax , DataIn
  mov MsBit , eax
 end;
end;

.. the ARM version fails (similar code : ignore the fact it is 
the reverse of BSR) ... what am I missing ?


procedure MSBitTest ( DataIn : longword);
var
 MSBit : longword;

begin
 asm
  clz w4 , DataIn
  mov MsBit , w4
 end;
end;

Regards
Vern

On 06/04/2023 11:36 a.m., Sven Barth via fpc-pascal wrote:
Vern via fpc-pascal  schrieb am Do., 
6. Apr. 2023, 17:32:


Does the current FPC compiler support  ARM inline assembler ?


Yes.


If so what is the equivalent ARM command for {$ASMMODE intel}


There is none, because only one syntax is supported.

Regards,
Sven


___
fpc-pascal maillist  -fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] FPC ARM inline Assembler

2023-04-06 Thread Sven Barth via fpc-pascal
Vern via fpc-pascal  schrieb am Do., 6.
Apr. 2023, 17:32:

> Does the current FPC compiler support  ARM inline assembler ?
>

Yes.


> If so what is the equivalent ARM command for {$ASMMODE intel}
>

There is none, because only one syntax is supported.

Regards,
Sven

>
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


[fpc-pascal] FPC ARM inline Assembler

2023-04-06 Thread Vern via fpc-pascal

Does the current FPC compiler support  ARM inline assembler ?

If so what is the equivalent ARM command for {$ASMMODE intel}

Thanks
Brian
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal