marcov wrote on Fri, 19 Aug 2016:

In our previous episode, Jonas Maebe said:
Another, more important, issue is that the LLVM-based compiler also
includes the regular code generator for the targeted architecture (to
generate entry and exit code for pure assembler routines).

FYI, I've been creating some SSE image conversion routines in Delphi/FPC
(FPC for avx) the last few days, and I noticed that Delphi allows something
like that too for 64-bit.  (That being generating entry and exit code for
asm code)

It has pseudo directives to push registers on entry, allowing it
to create a stack frame (aligned, with SEH record).

There are four functions:

.noframe - omit stackframe (our nostackframe)
[snip]

That's a bit different. I was talking about the entry and exit code for a pure assembler routine based on e.g. declared local variables and types of the parameters, which was done already even by Turbo Pascal. That has to be done even when using an LLVM code generator, since pure assembler routines are not touched by the LLVM-to-native passes that come after.

The directives you mention are extra features to influence the kind of entry/exit code to generate for assembler routines (which we indeed don't have yet).


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

Reply via email to