[fpc-devel] Successful implementation of inline support forpure assembler routines on x86
florian at freepascal.org
Sun Mar 17 20:02:23 CET 2019
Am 17.03.19 um 18:18 schrieb J. Gareth Moreton:
> Hi Florian,
> I think the main thing is that Object
> Pascal has always supported the ability to
> drop into assembly language, unlike C++
> which requires a dialect-specific
> extension and is not allowed at all under
> Microsoft Visual C++ 64-bit.
Actually, the policy of FPC is to avoid assembler as much as possible.
> certain assembler routines to be inlined
> seems like a logical extension using
> language semantics that already exist.
> Part of it may be preference but I think
> some people like the fine degree of
> control that assembly language offers,
> while intrinsics > I find, can quickly get
> somewhat untidy and confusing,
I cannot see how inlining does this better?
> with instructions like CPUID that read and
> write to specific registers (although my
> code forbids that instruction because EBX
> is non-volatile).
CPUID is that slow, it makes no sense to inline it.
> The other thing... no matter how good the
> compiler is, there are some situations
> where assembly language will always
> perform better.
I doubt this as inline assembler pure routines use always fixed
registers. Intrinsics don't do so.
> I suppose I would like to ask the
> community more than anything. Is this a
> feature that you'd like to see and use?
> I hoped the way that I designed the patch
> helps to alleviate the can of worms by
> simply not allowing inline if the platform
> doesn't have the ability to support it
But this is exactly the can of worms. People will request that we
support it on all CPUs.
> "CanInline" simply returns False
> unless overridden.
More information about the fpc-devel