I have run the below predicate test, which displays several byte sizes of integer types and variables, in different VIP builds.
Code: Select all
class predicates
writeByteSize : (Type Var).
clauses
writeByteSize(Var) :-
stdIo::write("Bytesize of type variable is ", sizeOf(Var), "\n").
domains
rec8 = rec8(integer8).
rec16 = rec16(integer16).
rec32 = rec32(integer).
rec64 = rec64(integer64).
class predicates
test : ().
clauses
test() :-
stdIo::write("compiler version ", compiler_version, "\n"),
stdIo::write("platform bits ", platform_bits, "\n\n"),
hasDomain(integer8, I8),
I8 = 0,
stdIo::write("Bytesize of domain integer8 is ", sizeOfDomain(integer8), "\n"),
stdIo::write("Bytesize of variable I8 is ", sizeOf(I8), "\n"),
writeByteSize(I8),
stdIo::write("\n"),
hasDomain(integer16, I16),
I16 = 0,
stdIo::write("Bytesize of domain integer16 is ", sizeOfDomain(integer16), "\n"),
stdIo::write("Bytesize of variable I16 is ", sizeOf(I16), "\n"),
writeByteSize(I16),
stdIo::write("\n"),
hasDomain(integer, I32),
I32 = 0,
stdIo::write("Bytesize of domain integer is ", sizeOfDomain(integer), "\n"),
stdIo::write("Bytesize of variable I32 is ", sizeOf(I32), "\n"),
writeByteSize(I32),
stdIo::write("\n"),
hasDomain(integer64, I64),
I64 = 0,
stdIo::write("Bytesize of domain integer64 is ", sizeOfDomain(integer64), "\n"),
stdIo::write("Bytesize of variable I64 is ", sizeOf(I64), "\n"),
writeByteSize(I64),
stdIo::write("\n"),
hasDomain(rec8, Rec8),
Rec8 = rec8(0),
stdIo::write("Bytesize of domain rec8 is ", sizeOfDomain(rec8), "\n"),
stdIo::write("Bytesize of variable Rec8 is ", sizeOf(Rec8), "\n"),
writeByteSize(Rec8),
stdIo::write("\n"),
hasDomain(rec16, Rec16),
Rec16 = rec16(0),
stdIo::write("Bytesize of domain rec16 is ", sizeOfDomain(rec16), "\n"),
stdIo::write("Bytesize of variable Rec16 is ", sizeOf(Rec16), "\n"),
writeByteSize(Rec16),
stdIo::write("\n"),
hasDomain(rec32, Rec32),
Rec32 = rec32(0),
stdIo::write("Bytesize of domain rec32 is ", sizeOfDomain(rec32), "\n"),
stdIo::write("Bytesize of variable Rec32 is ", sizeOf(Rec32), "\n"),
writeByteSize(Rec32),
stdIo::write("\n"),
hasDomain(rec64, Rec64),
Rec64 = rec64(0),
stdIo::write("Bytesize of domain rec64 is ", sizeOfDomain(rec64), "\n"),
stdIo::write("Bytesize of variable Rec64 is ", sizeOf(Rec64), "\n"),
writeByteSize(Rec64),
stdIo::write("\n").
Code: Select all
compiler version 7202
platform bits 32
Bytesize of domain integer8 is 1
Bytesize of variable I8 is 1
Bytesize of type variable is 1
Bytesize of domain integer16 is 2
Bytesize of variable I16 is 2
Bytesize of type variable is 2
Bytesize of domain integer is 4
Bytesize of variable I32 is 4
Bytesize of type variable is 4
Bytesize of domain integer64 is 8
Bytesize of variable I64 is 8
Bytesize of type variable is 8
Bytesize of domain rec8 is 4
Bytesize of variable Rec8 is 4
Bytesize of type variable is 4
Bytesize of domain rec16 is 4
Bytesize of variable Rec16 is 4
Bytesize of type variable is 4
Bytesize of domain rec32 is 4
Bytesize of variable Rec32 is 4
Bytesize of type variable is 4
Bytesize of domain rec64 is 8
Bytesize of variable Rec64 is 8
Bytesize of type variable is 8
I tried it in current VIP build 7501 in 32 bit mode and it has output:
Code: Select all
compiler version 7500
platform bits 32
Bytesize of domain integer8 is 1
Bytesize of variable I8 is 4
Bytesize of type variable is 1
Bytesize of domain integer16 is 2
Bytesize of variable I16 is 4
Bytesize of type variable is 2
Bytesize of domain integer is 4
Bytesize of variable I32 is 4
Bytesize of type variable is 4
Bytesize of domain integer64 is 8
Bytesize of variable I64 is 8
Bytesize of type variable is 8
Bytesize of domain rec8 is 1
Bytesize of variable Rec8 is 1
Bytesize of type variable is 1
Bytesize of domain rec16 is 2
Bytesize of variable Rec16 is 2
Bytesize of type variable is 2
Bytesize of domain rec32 is 4
Bytesize of variable Rec32 is 4
Bytesize of type variable is 4
Bytesize of domain rec64 is 8
Bytesize of variable Rec64 is 8
Bytesize of type variable is 8
Are all variables of type rec8 to rec64 not stored as pointers occupying 4 bytes in 32 bit mode?
(I really did it in 7501, even so constant compiler_version says 7500.)
I checked it also in 64 bit mode of the current VIP build. Output shows same picture as before in 32 bit:
Code: Select all
compiler version 7500
platform bits 64
Bytesize of domain integer8 is 1
Bytesize of variable I8 is 4
Bytesize of type variable is 1
Bytesize of domain integer16 is 2
Bytesize of variable I16 is 4
Bytesize of type variable is 2
Bytesize of domain integer is 4
Bytesize of variable I32 is 4
Bytesize of type variable is 4
Bytesize of domain integer64 is 8
Bytesize of variable I64 is 8
Bytesize of type variable is 8
Bytesize of domain rec8 is 1
Bytesize of variable Rec8 is 1
Bytesize of type variable is 1
Bytesize of domain rec16 is 2
Bytesize of variable Rec16 is 2
Bytesize of type variable is 2
Bytesize of domain rec32 is 4
Bytesize of variable Rec32 is 4
Bytesize of type variable is 4
Bytesize of domain rec64 is 8
Bytesize of variable Rec64 is 8
Bytesize of type variable is 8
Best regards
Martin