Re: [fpc-pascal] FPC ARM inline Assembler
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
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
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
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
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
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
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