Hi Sven,

Am I right in thinking that, for C alignment, each field is aligned according to its data size? For example, if you had:

TType = record
  Field1: Byte
  Field2: LongInt;
end;

Are there are three unused bytes between Field1 and Field2 and the structure as a whole is 8 bytes long and aligned to a 4-byte boundary?  I'm trying to find the page that explains all that, and also exceptional cases where the data size is not necessary the same as the minimum alignment.

Gareth aka. Kit

On 02/04/2020 16:10, Sven Barth via fpc-devel wrote:
J. Gareth Moreton <gar...@moreton-family.com <mailto:gar...@moreton-family.com>> schrieb am Do., 2. Apr. 2020, 15:25:

    For standard record types (no "packed" modifier or compiler
    directives
    or anything), I'm wondering how many liberties that the compiler is
    allowed to take in storing its data.  Take the following example
    (from
    raybench.pas over here: http://runtimeterror.com/tools/raybench ):


With no explicit packing specified the compiler in general follows the platform's C compiler for compatibility reasons.

    P.S. Of course you can force it by forcing the vector to be an
    m128 type
    and specifying vectorcall for x86_64-win64, but not everyone will
    know
    to do that and it gets unwieldly rather quickly.  Speaking of
    vectorcall, I'm wondering if we can introduce 'fastcall' as an
    alias for
    'ms_abi_default', mostly so if we follow Microsoft Visual C++'s
    example
    of automatically making all routines vectorcall (which is closer
    to the
    System V ABI used by linux and will make vectorisation easier), we
    can
    force the default one if we need a routine that, say, has to
    interface
    with a third-party library ('fastcall' under win32 is what the MS
    ABI is
    based off... first parameter in ECX, second in EDX and everything
    else
    on the stack).


Please provide a source for your statement that MSVC uses vectorcall by default. Cause I highly doubt that as Microsoft is huge on backwards compatibility especially regarding the lower level stuff.

Regards,
Sven


_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel


--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to