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 <fpc-pascal@lists.freepascal.org> 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

Reply via email to