type Plain = record a: Word8; b: Word8 end Spread = record a, b #{aligned 8}: Word8 end Packed = record a: Word8; wide #{aligned 1}: Word end Over = record #{aligned 16} a: Word8 end var tuned #{aligned 32}: Word8 spread: Spread first: ^Word8 second: ^Word8 program() begin assert(#size(Plain) = 2u); assert(#size(Spread) = 16u); assert(#offset(Spread, a) = 0u); assert(#offset(Spread, b) = 8u); assert(#size(Packed) = 9u); assert(#offset(Packed, wide) = 1u); assert(#size(Over) = 16u); assert(#alignment(Over) = 16u); first := @spread.a; second := @spread.b; assert(cast(second: Word) - cast(first: Word) = 8u) return 0u8 end.