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